开发语言大体上可以分为两类:
- 强类型语言:
- 要求严格,所有变量先定义后使用,变量类型不经过转换的话永远是这个类型
- 安全性高,但是因此效率更低
- 弱类型语言:
- 如:JavaScript
Java是强类型语言。
Java的数据类型可以分为两类:
- 基本类型(primitive type)
- 引用类型(reference type)
code解释数据类型
public static void main(String[] args) {
//整数
int a = 10;
byte b = 127;
short c = 11;
long d = 238494028L;//long类型要在后面加L
//小数:浮点数
float e = 11.2F;//float类型要在后面加F
double f = 3.1415926;
//字符
char name = 'a';
String sex = "female";//String不是关键字,是类
//布尔值:是非
boolean flag1 = true;
boolean flag2 = false;
}
注意:不用刻意去记不同数据类型的最大最小值,可以通过相应的类,进入源码查看。
科普下,电脑的32位、64位的区别?
- 32位:最多可以装4G的内存
- 64位:最多可以装128G的内存
位、字节说明
- 位(bit):是计算机内部数据存储的最小单位,11011001是一个8位的二进制数。
- 字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示。
- 1B(byte,字节)= 8bit(位)
- 字符:指计算机中使用的字母、数字、字和符号
1bit 表示1位
1Byte表示一个字节 1B = 8b
1024B = 1KB
1024KB = 1M
1024M = 1G
整数的扩展
public static void main(String[] args) {
//整数扩展: 进制 二进制0b 八进制0 十进制 十六进制0x
//分别输出不同进制的10
int a = 10;
int b = 010;//八进制10
int c = 0x10;//十六进制10
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
//输出
10
8
16
注意:最好完全避免使用浮点数进行比较。
- 浮点数的性质:有限、离散、舍入误差、大约、接近但不等于
浮点数的扩展
//浮点数的扩展
//一个神奇的事情
float i = 0.1F;
double j = 1.0/10;
System.out.println(i == j);
System.out.println("i = "+ i);
System.out.println("j = "+j);
float d1 = 2342114434F;
float d2 = d1 + 1;
System.out.println(d1 == d2);
System.out.println("d1 = "+d1);
System.out.println("d2 = "+d2);
//输出
false
i = 0.1
j = 0.1
true
d1 = 2.34211456E9
d2 = 2.34211456E9
因此,银行业务等表示金钱的,可以使用BigDecimal数学工具。
字符的扩展
char x = 'a';
char y = '种';
System.out.println(x);
System.out.println(y);
System.out.println((int)x);
System.out.println((int)y);
//输出
a
种
97
31181
存在unicode编码,2个字节,共 2 16 2^{16} 216位,表示0-65536,最早的excel也是只有65536个空格
//U0000 UFFFF
char a1 = '\u0061';
System.out.println(a1);
//输出
a
转义字符
//转义字符
//\t 表示制表符
//\n 换行
System.out.println("Hello\tworld!");
System.out.println("Hello\nworld!");
//输出
Hello world!
Hello
world!
对象,内存分析
String s1 = new String("hello world!");
String s2 = new String("hello world!");
System.out.println(s1 == s2);
String s3 = "hello world!";
String s4 = "hello world!";
System.out.println(s3 == s4);
//输出
false
true
布尔扩展,写法分析
//布尔值扩展
boolean flag1 = true;
if (flag1 == true){
//新手
}
if (flag1){
//老手
}
//两者等价,但是用第二种