javaSE_day02
javaSE_day02
1. 进制
1.1进制:
二进制: 前缀是0b 0和1组成
int i = 110;// 不能这样写, 应该是 int i = 0b110;
- Eg: 1+1=10 , 11+1=100 , 111+1=1000
八进制:前缀是0 范围: 0-7
int i = 065
- Eg: 7+1=10 27+1=30 77+1=100
十六进制: 前缀是0x 范围:0-9 a-f
- Eg: 9+1=a a+1=b f+1=10 39+1=3a 3f+1=40
99+1=9a 9f+1=a0 af+1=b0 ff+1=100
1.2进制的转换
-
十进制 转 二进制(八进制、十六进制)
除 2(8 / 16)取余 , 逆序排列 -
二进制(八进制、十六进制)转 十进制
1101 = 120+0*21+122+1*23 -
十进制的小数 转 二进制
小数部分乘2取整 ,顺序排列 ;
整数部分除2取余,逆序排列。 -
二进制 转 八进制、十六进制
eg: 1101010 ------> 八进制 三位为一组,每组转换为八进制再合并
( 001 101 010 --> 0152 )
1101010 -------> 十六进制 四位为一组,每组转换为十六进制再合并
( 0110 1010 --> 0x6a )
1.3进制转换的api方法
Integer.toBinaryString(num); //十进制转二进制
Integer.toOctalString(num); //十进制转八进制
Integer.toHexString(num); //十进制转十六进制
练习: 打印 ‘中’ 的十六进制数值
//将 '中' 转换为十六进制数值
char c = '中';
System.out.println(Integer.toHexString(c)); //char是特殊的整型
//将十六进制数值转换为汉字 '中'
char a = '\u4e2d';
System.out.println(a);
char a2 = 0x4e2d;
System.out.println(a2);
2. 变量
- 由变量名和变量值组成
- 定义变量:数据类型 变量名;
- 给变量赋值:变量名 = 值;
- 使用变量:局部变量使用之前必须定义值, 全局变量不初始化时会输出默认值。
- 类体里只能是变量的定义和类的定义,语句只能放在方法里 。
- 方法内的局部变量名可以和成员变量(类里面的变量)重名。
各种数据类型的默认值:
* byte ,short ,int ,long 默认值为 0
* float ,double 默认值为 0.0
* char 默认值为 ‘\u000’ (是个空格)
* boolean 默认值为 false
* 引用类型 默认值为 null
变量名的定义规则:
(1) 见名知其意
(2) 驼峰式命名法 username
(3) 变量名是合法的标识符
3. 标识符
- 标识符:用来给类、变量、方法、数组等起名字的符号。
- 标识符组成:a—z, A—Z , 0—9 , _ , $ ,各种国家的文字(后两个不建议使用)
- 标识符合法性:首位不能是数字、不能是关键字 int $2;
4. 关键字
用来表示特殊意义的单词。 一共有 53个关键字 2个保留字
5. 注释
(1) // 单行注释
(2) /* */ 多行注释
(3) /** */ 文档注释
文档注释好处:光标放到方法上就会显示注释的内容、生成帮助文档API文件
6. 运算符–算数运算符
种类:+ - * / %
eg:
- int x = -8;
int y = -4;
int r = x/y --> r = 2
y = 5;
r = x%y --> r = -3 取余与被除数的符号有关
x = 8;
y = -5;
r = x%y --> r = 3 - x = 5;
y = 2;
r = x/y --> r = 2 值的类型取决于除数、被除数的类型
任意整数 / 0 --> 抛出异常ArithmeticException
任意非零数字 / 0.0 --> Infinity
任意非零小数/0 --> Infinity
0/0.0 0.0/0.0 0.0/0 --> NAN
保留两位小数:
double d = 45.123456;
System.out.println(String.format("%.2f", d)); //==方法1== 默认四舍五入
DecimalFormat df = new DecimalFormat("0.00"); //==方法2==
System.out.println(df.format(d));
字符串型转换为数值型
字符串和数值不能强转
String str = df.format(d);
double d2 = Double.parseDouble(str);//把字符串类型变成数值型
System.out.println(d2);
eg:
double d1 = 2;
double d2 = 1.9;
System.out.println(d1-d2);//结果为精确值 0.10000000000000009
BigDecimal d3 = new BigDecimal("2");//不精确,是0.1 ==方法1==
String.format("%.2f", d);//==方法2==
BigDecimal d4 = new BigDecimal("1.9");
System.out.println(d3.subtract(d4)); // d3-d4
7. 连接符 +
System.out.println(3+5+""); //结果为8
System.out.println(""+3+5); // 结果为35
System.out.println(3+""+5); // 结果为35
若字符串在前面,则后面的 + 都是连接符
8. 运算符-赋值运算符
赋值运算符左边必须是变量,右边可以是变量、常量、表达式 。
eg :
int r = 3;
int x = 9;
r = x;
r = x+3;
r = (x=x+5);
x+3 = r; //error
赋值方向: 右到左赋值
9. 强制换转,自动提升
强制转换: 赋值运算符右边的比左边的大,需要强制转换。
在变量或表达式前边添加(强制转换的类型)
eg :
float f = (float)5.67; //两位小数是double
int r = (int)(3.0+3);//一位小数是float
(byte, short , int, long , char , float , double, 父子关系的类) 可强制转换
自动提升:赋值运算符右边的比左边的小,小的自动提升。
eg :
float f = 6;
int i = ‘a’;
有变量参与的运算,表达式最小的数据类型是int
经典案例:
byte b = 127;
byte r = (byte)(b+1);
System.out.println( r ); //结果为-128 超出最大值范围时,结果为最小值
b=-128;
byte r2 = (byte)(b-1);
System.out.println(r2); //结果为127 超出最小值范围时,结果为最大值
10. 自增自减运算符 ++
前置 ++x :先自增,后赋值
后置 x++ :先赋值,后自增
经典案例:
int i = 6;
int j = i++ + ++i; // 6+8
System.out.println(j+","+i); // 14,8
i = 6;
j = ++i + i++; // 7+7
System.out.println(j+","+i); // 14,8
11. 比较运算符 == != >= > < <
12. 逻辑运算符 && || !
&&: 两边全为true,则返回true
||: 有一个true,则返回true
!: 取反
(&&和||)
(&和|) 2&3 位运算 //// true&3>4 作逻辑与运算 没有短路
&& 短路 :左边返回false,表达式短路,右边不执行
|| 短路 :左边返回true,表达式短路,右边不执行
如果&&前面有||,那么||左边返回true时,则仍然会导致短路。
经典案例:
-
int x = 2,y = 3;
boolean b = x++>3 && y–<1;
System.out.println(b+","+x+","+y); // false,3,3 -
x=2;y = 3;
boolean b2 = ++x<0 || y++>0;
System.out.println(b2+","+x+","+y); // true,3,4 -
x = 1; y = 1;
boolean a1 = x++ > 0 || true && y++ > 0;
System.out.println(a1+","+x+","+y); // true,2,1 -
x = 1; y = 1;
boolean a2 = x++ > 3 || true && y++ > 3;
System.out.println(a2+","+x+","+y); // false,2,2
13. 二进制运算符 &, | ,^ ,~(补码运算)
- & : 两个全为1则为1,否则为0
- | : 有1则为1
- ^ : 相同为0,不同为1 i^i = 0 , j^0 = j ,a^ b^ b = a
-
~ : 补全,一共8位 --> 取反 --> 最高位是符号位,1是负数 --> 最高位不变,其余取反,再加1
正数的补码、原码、反码都一样
eg :
System.out.println(2&3); 结果为 2
System.out.println(2|3); 结果为 3
System.out.println(2^3); 结果为1
上一篇: Java IO文件流
推荐阅读