Java-SE Day2

强类型语言:所有变量必须先定义后才能使用

float : 大约,接近但不等于,最好完全避免浮点数比较

BigDecimal : 数学工具类

所有的字符本质还是数字

强制转换

​ byte,short,char --> int --> long --> float -->double

(类型)变量名字 高 -- 低

高到低需强制转换,低到高自动转换

注意点:

  1. 不能对布尔值进行转换

  2. 不能把对象类型转换为不相干的类型

  3. 在把高容量转换低容量时,强制转换

  4. 转换的时候可能存在内存溢出,或者精度问题


变量

局部变量:在函数/方法中使用

实例变量:从属于对象,需调用对象使用; 若不进行初始化,这个类型的默认值 0、0.0、null (布尔值默认flase

类变量 : static(与类变量/属性 一致 ,但其无需实例化对象即可使用,可理解为全局变量)

复制代码
// 变量类型 变量名字 = new Demo08();			
Demo08 demo = new Demo08();			// 可理解为实例化对象,实例化后即可调用其内部变量/属性
System.out.println(demo.age);
final PI = 3.14;					// 定义常量


// 位运算,位运算符( << *2  >>/2 ),位运算效率最高
A = 0011 1100
B = 0000 1101
-------------
A&B = 0000 1100   // and,1相同为1,出现0则为0
A|B = 0011 1101	  // or ,或运算,出现1 则为1
A^B = 0011 0001	  // 异或运算,相同为0,不同为1
~B  = 1111 0010	  // 取反位运算,0为1,1为0

System.out.println(2<<3)		// 十进制的2,在位运算中向左移动3位,即2^3


x ? y :z 					// 如果x = true ,结果为y,否则为z

package com.xxx.xx			// 声明包,声明当前类的包位置
import com.xx,xx.x			// 导入指定包下的类

JAVA 流程控制

Scanner 对象

我们可以通过Scanner 类来获取用户的输入

next() 获取用户输入在空格处会结束,nextLine() 会获取用户输入的空格

java 复制代码
// 创建一个扫描器对象,用于接受键盘数据
Scanner scanner = new Scanner(System.in);
// 判断用户是否有输入字符串
if (scanner.hasNext()==true){
    String str = scanner.next();
}
// 判断是否还有输入
if (scanner.hasNextLine()){
    String str = scanner.nextLine();
}

scanne.nextInt();  	// 接受输入的整数
scanner.netxFloat() // 接受输入的浮点数
	......
scanner.close();	// 关闭IO 流类


// 其他方法
s.equals("Hello");			// equals 用于判断s 字符串是否与指定字符串相符合
Swirch、While、DoWhile、For

case 穿透现象:若Switch 匹配的case 无break,则会向下继续穿透下一个case 的输出

java 复制代码
// do...while 与while 类似,但其最少会执行一次
// while 是先判断后执行,do...while 是先执行后判断,所以其会至少执行一次
do {
    sun = sum +i;
    i++;
}while (i<=100);
System.out.println(sum);		

// (初始化; 布尔表达式;更新){
		// 代码语句
//}
for(int j=1;j<=9;j++){
    for(int i=1;i<=j;i++){
        System.out.print(i+"*"+j+"="+(j*i)+"\t");
    } 
	System.out.println()
}


// 增强for 循环
int[] numbers = {1,2,3,4,5}		// 创建一个int 类型的数组
for (int x:numbers){		// 将数组中每个元素赋值于 int x
    System.out.println(x)
}