1.常量分类:
- 字符串常量:双引号括起来的就是字符串常量,"abc"、"你好"
- 整数常量:100、200...
- 浮点数常量: 1.1、-3.14...
- 字符常量:单引号括起来的就是字符常量,'A'、'中'...
- 布尔常量:仅true、false
- 空常量:null(没有任何数据)
public class Demo01Const{
public static void main(String[] args){
//字符串常量
System.out.println("abc");
System.out.println("");//字符串两双引号之间的内容为空,可以正常打印
System.out.println("xyz");
//整数常量
System.out.println(-100);
//浮点数常量
System.out.println(3.14);
//字符常量
System.out.println('A');
//System.out.println('');//两单引号之间不可以为空,否则出错
//System.out.println('AB');//两单引号之间必须有且仅有一个字符,多了不行。
//布尔常量
System.out.println(true);
System.out.println(false);
//空常量
System.out.println(null);//空常量不可以用来直接打印输出
}
}
1.1 数据类型
- 基本数据类型
- 引用数据类型:字符串、数组、类、接口、Lambda
1.1.1基本数据类型
- 整数型 byte short int long
- 浮点型 float double
- 字符型 char
- 布尔型 boolean
- 一个字节是8位
- byte (-27~27-1)
- short (-215~215-1)
- int (-231~231-1)
- long (-263~263-1)
- 2^31 = 2,147,483,648
- 2^63 = 9,223,372,036,854,775,808
注意事项:
- 字符串不是基本类型而是引用类型
- 浮点型可能只是一个近似值,并非精确值。
- 数值范围和字节数不一定相关,例如float数据范围比long更广,但float是4字节,long是8字节
- 浮点数当中默认值是double,如果一定使用float类型,需要加上一个后缀F;如果是整数,默认为int型,如果一定要使用long类型,需要加上一个后缀L。推荐使用大写字母后缀。
2.变量
- 判断是否会报错要首先检查右边:观察常量值大小是否在对应的数据类型范围(默认情况下是int/double)内,如果超过范围则直接报错。
- 再看左边:观察被赋值的变量类型是否可以成功接收右边的常量
public class Demo02Var {
public static void main(String[] args){
int num1;
num1=10;
System.out.println(num1);
int num2=20;
System.out.println(num2 );
byte num3=30;
System.out.println(num3);
//byte num4=400;
//System.out.println(num4);//报错:400超出byte的范围是-128~127
short num5=50;
System.out.println(num5);
char ch='A';
System.out.println(ch);
//long num6=3000000000;//会报错,没有加L默认是int(30亿超过了int的范围)
long num6=3000000000L;
System.out.println(num6);
double num7=1.2;
System.out.println(num7);
float num8=1.2F;
System.out.println(num8);
boolean b1=true;
System.out.println(b1);
}
}
变量的注意事项:
- 如果定义了重复的变量名,则程序会报错。
- 对于float和long类型的变量,字母后缀F和L不要丢掉。
- 变量不可以超出作用域的范围(作用域:从定义变量的第一行开始,一直到直接所属的大括号{}结束为止)
public class Demo03Var {
public static void main(String[] args){
{
int num1=10;
System.out.println(num1);//输出10
}
System.out.println(num1);//报错 在num1的作用域外,无法输出num1
}
}
public class Demo03Var {
public static void main(String[] args){
int num1=20;
{
int num1=10;//报错 花括号外面已经定义了num1,而且还没消失,由于不可以有两个相同名字的变量同时存在 所以这里会报错
System.out.println(num1);
}
}
}
public class Demo03Var {
public static void main(String[] args){
{
int num1=10;
System.out.println(num1);//10
}
int num1=30;//此时上述花括号里的num1已经消失了,所以可以在外面重新定义另一个num1 不会报错
System.out.println(num1);//30
}
}
- 可以用一个语句同时创建多个变量,但是不推荐
//同时创建3个都是int类型的变量
int a,b,c;
a = 10;
b = 20;
c = 30;
System.out.println(a);//10
System.out.println(b);//20
System.out.println(c);//30
//同时创建三个int变量,并且同时各自赋值
int x=100,y=200,z=300;
System.out.println(x);//100
System.out.println(y);//200
System.out.println(z);//300