注释
单行注释 //
多行注释 /* content */
标识符
关键字
Abstract assert boolean break byte case.....
不可作为变量名或方法名
数据类型
强类型语言:要求变量的使用严格符合规定,所有变量都必须先定义再使用。安全性较高,速度较慢。(java)
弱类型语言:javascript
java数据类型
-
基本类型 primitive type
数值类型:整数类型 浮点类型 字符类型char
boolean类型
//char
char name = 'z';
//String
String name1 = "a string";Boolean: 1 bit, true or false
Double: 8 bytes
Float: 4 bytes
Long: 8 bytes
int: 4 bytes
short:2 bytes
byte:1字节
-
引用类型 reference type
类
接口
数组
字节
位 bit:是计算机内部数据存储的最小单位
字节 byte:是计算机中数据处理的基本单位
1B = 8 bit
拓展
-
整数扩展
进制:二进制0b;十进制;八进制0;十六进制0x (0-9 A-F)
binary octal decimal hex
int i = 10; // 二进制 -- 10
int i2 = 010; // 八进制 -- 8
int i3 = 0x10; // 十六进制 -- 16
-
浮点数拓展
float: 有限 离散 舍入误差 结果是一个大约的数
float f = 0.1f;
double g = 1.0/10;
System.out.println(f); // 0.1
System.out.println(g); // 0.1
System.out.println(f==g); // false
float d1 = 23131231421412f;
float d2 = d1+1;
System.out.println(d1==d2); // trueBigDecimal(数学工具类)
q:银行业务如何表示?
最好完全避免使用浮点数进行比较
-
字符拓展
casts 强制转换
所有的字符本质还是数字
char c1 = 'A';
char c2 = '中';
System.out.println(c1);
System.out.println((int)c1); //casts强制类型转换
System.out.println(c2);
System.out.println((int)c2);char c3 = '\u0061';
System.out.println(c3); //aSystem.out.println("hello\tworld");
System.out.println("hello\nworld");-
八进制转义序列:\ + 1到3位5数字;范围'\000'~'\377' \0:空字符
-
Unicode转义字符:\u + 四个十六进制数字;0~65535 \u0000:空字符
World
hello
hello world
\n 换行符
\t 制表符
转义字符
2字节 65536 (早期的Excel表格的长度 2**16=65536)U0000-UFFFF
编码: unicode表
-
-
布尔值扩展
boolean flag = true;
if (flag==true){}
// equal to if(flag){}int i = 128;
byte b = (byte)i; // -128//manipulate a large number, attention to overflow problem int money = 1_000_000_000; // _ can be used in numbers, it won't print int years = 20; int total = money * years; //-1474836480 memory overflow long total2 = money * years; // -1474836480 // the type of money and years is int // so the default type of total2 is also int // before casts it to long, the result already got problem // First, cast one number to long long total3 = money * ((long)years); //20000000000
memory overflow
char c = 'a'; // a int v = c+1; // 98 System.out.println((char)v); // b
-
不能对布尔值进行转换
-
不能把对象类型转换为不相干的类型
-
在把高容量转换为低容量的时候,强制转换
-
转换的时候可能存在内存溢出,或者精度问题
注意点
低 -> 高
double d = i; //128.0
-
自动转换
Problem2: 精度问题
System.out.println((int)23.7); //23 System.out.println((int)-45.89f); //-45
problem1: 内存溢出 memory overflow the max value of byte is 127
高 -> 低
(类型)变量名
-
强制转换
类型转换
-
强制转换
(类型)变量名
int i = 128;
byte b = (byte)i; // -128problem1: 内存溢出 memory overflow
the max value of byte is 127System.out.println((int)23.7); //23
System.out.println((int)-45.89f); //-45 -
-
Problem2: 精度问题
double d = i; //128.0
低 -> 高
注意点
-
不能对布尔值进行转换
-
不能把对象类型转换为不相干的类型
-
在把高容量转换为低容量的时候,强制转换
-
转换的时候可能存在内存溢出,或者精度问题
-
memory overflow
char c = 'a'; // a
int v = c+1; // 98
System.out.println((char)v);
//manipulate a large number, attention to overflow problem
int money = 1_000_000_000; // _ can be used in numbers, it won't print
int years = 20;
int total = money * years; //-1474836480 memory overflow
long total2 = money * years; // -1474836480
// the type of money and years is int
// so the default type of total2 is also int
// before casts it to long, the result already got problem
// First, cast one number to long
long total3 = money * ((long)years); //20000000000