02.1常量
常量:就是在程序执行过程中其值不发生改变的量
常量分类:a:字面值常量 b:自定义常量
字面值常量分类: 字符串常量:用双引号引起 "Hello"
整数常量:不带小数的数字 (byte short int long)
小数常量:带小数的数字 (float double)
字符常量:用单引号引起 (char) 'a'
布尔常量:布尔值,表示真假 (boolean)
空常量:特殊的值,空值,不能直接输出 null
02.2进制
二进制的数据表现形式:由0,1组成,以0b开头
八进制的数据表现形式:由0,1,…7组成。 以0开头
十进制的数据表现形式:由0,1,…9组成。 整数默认是十进制的
十六进制的数据表现形式:由0,1,…9,a,b,c,d,e,f, 以0x开头
进制详细如图所示:
02.3变量
变量:在程序执行过程中其值可以发生改变的量
变量定义格式:数据类型 变量名 = 变量值
数据类型:基本数据类型:数值型:整数:byte(1)short(2)int(4)long(8) int(默认)
浮点数:float(4) double(8) double(默认)
字符:char(2)
非数值型:布尔:boolean(1)
引用数据类型:数组,类,接口
02.4数据类型转换
+=的隐含强制转换:
//区别 short s = 1; s = s + 1; //这里需要强制类型转换,强制转换为short类型 和 short s = 1; s+=1; //+=隐含了强制类型转换,所以这里没有问题
Java中默认转换规则:a: boolean类型不能转换为其他的数据类型
b: byte,short,char—int—long—float—double
c: byte,short,char之间不转换,他们参与运算首先转换为int类型
强制转换格式:目标数据类型 变量名 = (目标数据类型)(被转换的数据);
尽量不要使用强制类型转换,因为可能存在损失精度的问题,除非有特殊需求
02.5字符串的+操作:
当+操作中出现字符串时,“+”是字符串连接符,而非算术运算符,当连续执行+操作时,从左到右依次执行。
System.out.println(‘0’+"ak"+47); //输出0ak47 System.out.println(‘0’+47+"ak"); //输出95ak
02.6变量相加与常量相加
char a='a',b;//第一行 b=(a+10);//第二行 //这一行有错,char运算时会转为int,而b为char,所以应强制转换 System.out.println(a);//第三行 b=(char)(a+10) System.out.println(b);//第四行
byte b1 = 3, b2 = 4, b; b=b1+b2; //这一句失败,byte运算会转换为int,而b为byte类型,会编译失败 b=3+4; //这里不会编译出错,常量先相加再赋值给byte b 没有超过byte范围
ASCII码表:‘0’=48;’A‘=65;’a‘=97
02.7算术运算符
运算符:对常量和变量进行操作的符号称为运算符
运算符分类:算术运算符:+,-,*,/,%(取余)
赋值运算符:=,+=,-=,*=,/=,%=(隐含强制类型转换)
关系运算符:==,!=,>,>=,<,<=
自增自减运算符:++,--
逻辑运算符:&(与),|(或),^(异或),!(非)
短路逻辑运算符:&&(短路与,左为真右执行,左为假,右不执行)
||(短路或,左为假右执行,左为真右不执行)
三元运算符:格式:关系表达式?表达式1:表达式2
范例a>b?a:b (先计算a>b,若为真,结果为a,若为假,结果为b
int x = 4; int y = (x++) + (++x) + (x*10); x=6 , y=70
int a = 10; 8
int b = (--a)+(a--)+(a*10);
9 18
System.out.println(a); //输出8
System.out.println(b); //输出98



