强类型语言:所有变量必须先定义后才能使用
float : 大约,接近但不等于,最好完全避免浮点数比较
BigDecimal : 数学工具类
所有的字符本质还是数字
强制转换
byte,short,char --> int --> long --> float -->double
(类型)变量名字 高 -- 低
高到低需强制转换,低到高自动转换
注意点:
-
不能对布尔值进行转换
-
不能把对象类型转换为不相干的类型
-
在把高容量转换低容量时,强制转换
-
转换的时候可能存在内存溢出,或者精度问题
变量
局部变量:在函数/方法中使用
实例变量:从属于对象,需调用对象使用; 若不进行初始化,这个类型的默认值 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)
}