If you launch an instance in EC2-Classic, it is assigned a public IP address by default. This is not an optional configuration.
If you launch an instance into a VPC, a public IP addressing feature is available for you to control whether your instance is assigned a public IP address. In the AWS console, there is a check-box called Assign Public IP to Auto-assign Public IP.The public IP address is assigned to the network interface with the device index of eth0.
A public IP address is assigned to your instance from Amazon's pool of public IP addresses, and is not associated with your AWS account. When a public IP address is disassociated from your instance, it is released back into the public IP address pool, and you cannot reuse it.
Whether you assign a public IP address to your instance during launch or not, you can associate an Elastic IP address with your instance after it's launched.