基本数据类型
数值型
整数类型:
整数类型
类型 | byte | 大小 |
---|---|---|
byte | 1 | -27~27-1 (-128~127) |
short | 2 | -215~215-1(-32768~32767) |
int | 4 | -231~1~231-1(-2146483648~2147483647) |
long | 8 | -263~263-1 |
浮点型
不精确的小数类型
类型 | byte | 大小 |
---|---|---|
float | 4 byte | -3.403E38~3.403E38 |
double | 8 byte | -1.798E308~1.798E308 |
浮点类型的两种表示形式:
十进制形式:3.14
科学计数法:3.14e0
注意:float是单精度类型,尾数可以到7位有效数字,double是双精度类型,绝大部分类型都采用double类型,浮点常量默认是double,要改成float可以在后面加上f,或者F
字符型数据
char 代表字符型,实际上字符型也是一种整数类型,相当于无符号整数类型。
Java字符编码用的是Unicode就是了,里面包含得有utf-8这些,这也意味这Java的字母不只是英文也可以是中文,但不建议使用。
布尔型
boolean类型有两个常量值,true和false
在内存中占一个字节(布尔数组)或4个字节(一般都是),不可以使用0和非0表示true和false
byte num1 = 10;
short num2 = 20;
int num3 = 30;
long num4 = 40;
float num5 = 500.1F;
double num6 = 600;
char word = 'a';//97
char word2 = 'b';//98
System.out.println("a的ASCII值与b的ASCII值相加结果为:"+(word2+word));//195
boolean flag=true;
String
1.String类是表示Java里面字符串的类,一旦创建就不能修改。
String和StringBulider的区别
String和StringBuilder类的主要区别是在于String类是可变的,一旦创建了一个字符串对象,就无法修改他。StringBulider是可变的,可以在缓冲区中进行修改字符串,而不必创建新的对象。还有就是性能不同,String类是不可变的,对字符串进行操作的时候需要创建新的字符串对象,StringBulider是可变的,直接进行变换就是,所以不用创建新的对象,节约内存空间。
String和StringBuffer的区别
String和StringBuffer有什么区别,首次是String不可变,StringBuffer是可以在缓冲区修改字符串。还有就是String是非线程安全的,StringBuffer是线程安全的,因为他的所有公共方法都是同步的,String的方法不同步。
String类的常用方法
chartAt(int index):返回指定索引处的字符
length(): 返回字符串的长度
substring(int beginIndex,int endIndex):返回一个新的字符串,它是原字符串的一个字串。
indexOf(String str):返回指定子字符在此字符串中第一次出现的索引。
equals(Object obj):将此字符串与指定对象进行比较
toUpperCase():将字符串转换成大写字母。
toLowerCase():将字符串转换成小写字母。
trim():返回一个字符串的副本,忽略前导空白和尾部空白。
整数和String的转换
int i = 123;
String s = Integer.toString(i);
String s = "123";
int i = Intger.parseInt(s);
引用数据类型
引用数据类型是建立在基本数据类型之上的,包含以下内容
类: class
接口: interface
数组: array
引用数据类型包含一种特殊的null类型,就是对一个对象的引用,对象包含对象实例和数组。相当于c语言里面的指针。
注意: 空引用(null)只能被转换成引用类型,不能转换成基本类型,因此不要把一个 null 值赋给基本数据类型的变量。
// class
Base base=new Base();
// String
String words="Hello world!";
// Array
ArrayList arrayList=new ArrayList();
注意:Java的String不是常规的数据类型,只是Java中的字符串类,属于引用类型,底层是char数组。
数据类型转换
自动类型转换
自动类型转换是容量小的数据类型可以自动转换成容量大的数据类型。两个不同数值类型进行算数操作时,会自动将两个类型转换为同一个类型,再进行计算(byte < short < char < int < long < float < double)
当两数的类型相同,两者进行运算后的结果超过了同类型的范围后就会导致值溢出。此时我们需要自己将其结果类型转换为能完整存放下的数据类型。
int i = 123456789;
float f = i; //f=1.2345679E8
int a = 100000000;
int b = 1000000;
long c =a * b; //c=276447232
long c = (long) (a * b)
强制类型转换
强制数据类型转换,又称为造型(cast),用于强制转换数值的类型,可能损失精度
int d =1;
byte e = (byte) d;
注意:
基本类型转化时常见的问题
1-操作比较大的数时,要留意是否溢出,尤其是整数操作时。
2-L和l的问题是:
(1)不要命名名字为l的变量,字母l和数字1容易混淆。
(2)long类型使用大写L,不要使用小写的l