-
声明
int a;//声明一个整数型的变量,命名为a int d,b;//声明了两个整数型的变量,名为d,b //注意:变量不能同名 例:int a;这样会编译错误
-
初始化
int a = 520;//声明变量并赋值为520 //初始化相当于给变量进行赋值 int b;//声明整数型变量b b=123;//给变量b赋值123 b=234;//修改变量b的值为234
-
使用
int a = 5; int j = i + 10; //将a的值取出然后相加最后赋值给整数型变量j //System.out.println(m); 编译错误,变量m未声明 int m; //System.out.println(m); //编译错误,变量m未初始化
-
命名:
-
只能包含字母,数字,_和$符,并且不能以数字开头。
int a1, a_5,$_1; //int a*; 编译错误 不能包含其他特殊符号 //int 1a; 编译错误,不能以数字进行开头
-
严格区分大小写
int aa =5; // System.out.println(aA); 编译错误 严格区分大小写
-
不能使用关键字
// int class,public; 编译错误 不能使用关键字
-
允许中文命名,但不建议,建议“英文的见名知意”,“小驼峰命名法”。
-
-
byte : 占一个字节 取值范围为【-128,127】
-
short :占两个字节 【-32768,32767】
-
int :整型 占四个字节 (最常用) 取值范围约21亿
-
整数的直接量默认为int类型,不能超出范围,若超出范围则会发生编译错误
-
两个整数相除,结果还是整数,小数位无条件舍弃(没有四舍五入)
-
若运算超出范围,则会溢出,溢出是需要避免的
int a =20; //20为整数直接量,在int范围内 //int b = 10000000000; 编译错误,100亿默认为int型,但超出int范围了 //int c = 23.12; 编译错误,数据类型不匹配 System.out.println(5/2); //2 System.out.println(2/5); //0 int d = 2147483647; //int的最大值 d = d+1; System.out.println(d); //-2147483648,发生溢出了
-
-
long :长整型 占八个字节
-
长整型需要在数字后加L或l
-
运算可能会溢出,建议在第一个数字后加L
long a = 233L; //233L为长整型的直接量 //long b = 10000000000; 编译错误,100亿默认为int型,但超出了int范围 long b1 = 10000000000L; //运算时若有可能溢出,建议在第1个数字后加L long e = 1000000000*2*10L; System.out.println(e); //200亿 long f = 1000000000*3*10L; System.out.println(f); //不是300亿 (100000000 * 3)超出了int范围 溢出处理 long g = 1000000000L*3*10; System.out.println(g); //300亿
-
浮点型 : 数据参与运算时,有可能会出现舍入误差,精确场合不能使用
-
float : 占四个字节 需要在数字后加F或f
-
double :占八个字节(双精度浮点型)
double a = 4.3;//4.3为浮点数直接量,默认为double型 float b = 5.21F;// 3.14F为float型直接量 double c = 3.0, d = 2.9; System.out.println(c - d); //0.10000000000000009 有可能发生舍入误差 double c1 = 6.0, d1 = 1.9; System.out.println(c1 - d1);//4.1
布尔型:boolean 只能存储true或false
boolean a = true; //true为布尔型直接量 boolean b = false;//false为布尔型直接量 int a = 5; boolean b = a-1>0; System.out.print(b); //结果:true字符型
-
char :占两个字节
-
字符类型事实上是一个2字节(16位)无符号整数,这个值对应字符的编码。Java字符类型采用Unicode字符集编码,Unicode是世界通用的定长字符集,所有的字符都是16位。
-
ASCII码:‘a’----97 ‘A’----65 ‘0’----48
-
字符直接量通过单引号表示,如‘中’,也可以采用16进制表示形式,如‘u4e2d’。
char c1 = '中'; //内存中存的是'中'的编码 char c2 = 'u4e2d'; //‘4e2d’是‘中’对应的16位Unicode编码的16进制表示形式 System.out.println(c1); //中 System.out.println(c2); //中
-
字符型直接量必须放在单引号中,并且只能有一个。
char x = '你'; //char a4=女; //编译错误 字符型直接量必须放在单引号中 //char a5=''; //编译错误 单引号中必须有字符 //char a6='25'; //编译错误 只能有一个字符
-
特殊字符需要通过来转义
转义字符 含义 ‘n’ 表示回车符 ‘r’ 表示换行符 ‘’ 表示反斜杠() ‘’’ 表示单引号(') ‘"’ 表示双引号(") char x = '"'; char y = '\'; System.out.println(x); //结果: " System.out.println(y); //结果:
-
两种方式数据类型由小到大依次为:byte----short/char----int----long----float-----double
-
自动/隐式类型转换:小类型到大类型
int a = 5; long b = a;//自动类型转换 long d = 5;//自动类型转换 这里的5是int型 小转大 自动 double e = 5;//自动类型转换
-
强制类型转换:大类型到小类型
int a = 5; long b = a;//自动类型转换 int c = (int) b;//强制类型转换 b为长整型需要强制转换为整型 long f = 1000000000000L; int g = (int) f;//强制类型转换 System.out.println(g);//-727379968 强转有可能发生溢出 double h = 23.14; int i = (int) h; System.out.println(i);//23 强转有可能丢失精度
语法:(要转换成为的数据类型)变量
注意:强转有可能溢出或丢失精度
-
整数直接量可以直接赋值给byte,short,char,但不能超出范围
-
byte,short,char型数据参与运算时,系统会将其自动转换为int再运算
byte b1 = 5; byte b2 = 6; byte b3 = (byte) (b1 + b2);//(b1+b2)为int型运算 然后强制转换 System.out.println(b3); System.out.println(2 + 2); //4 //char型数据参与运算时,系统会将其自动转换为int再运算 System.out.println('2' + '2');//100 '2'的码50,加上'2'的码50 System.out.println(2 + '2');//52 System.out.println('2');//2 没有运算直接输字符



