欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

javaSE_day02

程序员文章站 2024-01-21 19:02:16
...

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:

  1. 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
  2. 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时,则仍然会导致短路。

经典案例:

  1. int x = 2,y = 3;
    boolean b = x++>3 && y–<1;
    System.out.println(b+","+x+","+y); // false,3,3

  2. x=2;y = 3;
    boolean b2 = ++x<0 || y++>0;
    System.out.println(b2+","+x+","+y); // true,3,4

  3. x = 1; y = 1;
    boolean a1 = x++ > 0 || true && y++ > 0;
    System.out.println(a1+","+x+","+y); // true,2,1

  4. 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