目录
JAVA中的数据类型
变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。
因此,通过定义不同类型的变量,可以在内存中储存整数、小数或者字符。
Java 的两大数据类型:
- 内置数据类型:Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
- 引用数据类型
内置数据类型
Java中的整数数据类型有byte、short、int、long,分别对应1、2、4、8字节长度,范围与C语言一致,但是java中没有unsigned类型。Java中的小数数据类型有 float 和 double,与 C 语言一致,但是 float 有区别, 例如:float b = 123.456f;Java里的布尔类型boolean 有两个字面常量 true 、false 。Java 中的 boolean 类型与整型不通用。
数据类型 | 包装类 | 长度 | 默认值 |
---|---|---|---|
byte | java.lang.Byte | 1个字节(-128-127) | 0 |
short | java.lang.Short | 2个字节(-32768-32767) | 0 |
int | java.lang.Integer | 4个字节(-2147483648-2147483647) | 0 |
long | java.lang.Long | 8个字节(-9223372036854775808-9223372036854775807) | 0L |
float | java.lang.Float | 4个字节(1.4E-45-3.4028235E38) | 0.0f |
double | java.lang.Double | 8个字节(4.9E-324-1.7976931348623157E308) | 0.0d |
char | java.lang.Character | 2个字节(0-65535) | 'u0000' |
String (or any object) | java.lang.String | null | |
boolean | java.lang.Boolean | false |
所有的包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类 Number 的子类,Number 类属于 java.lang 包。传送门:Java Number & Math 类 、 Java Character 类 、 Java String 类 、 Java StringBuffer 和 StringBuilder 类
引用数据类型
- 在Java中,引用类型的变量非常类似于 C/C++ 的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如 Employee、Puppy 等。变量一旦声明后,类型就不能被改变了。
- 对象、数组都是引用数据类型。
- 所有引用类型的默认值都是 null。
- 一个引用变量可以用来引用任何与之兼容的类型。
例子:Site site = new Site("Runoob");
数组对象
Java 语言中提供的数组是用来存储固定大小的同类型元素。Java里的数组是个对象,是引用数据类型
int[] a={1,2,3,4,5}; //初始化
int[] a=new int[5]; //未初始化
//数组的长度
int b=a.length
Java中拷贝函数是 System.arraycopy,但是Java中很少进行对象的拷贝,一般只对基本类型对象(byte,short,int,long)数组进行拷贝,无法对class类型对象数组进行拷贝。
数组的遍历
方法一:
方法二:
相关文章:Java 数组
字符串对象
Java里用String类型表示字符串
String a="hello,word";
String a=new String("hello,word");
字符串的基本操作
//将字符串中的字符提取出来(提取出o)
char b=new String("hello").charAt(4);
//取得指定字符串的下标
int b=new String("hello").indexOf("o");
//字符串的长度
int b=a.length();
//去掉字符串首尾的空格
new String(" ha ").trim();
//字符串的拼接
String b=a+",world";
//字符串的子串
String c=a.substring(1,4);
//字符串的替换
String d=a.replace("llo","he");
//将数字转换成字符串
int a=123;
String b=String.valueOf(a);
//格式化字符串
int a=123;
double b=123.456;
String c="hello,world";
String d=String.format("a=%d,b=%.2f,%s",a,b,c);
//转义字符
String e=" "ok" ";
字符串的比较
//字符串的内容比较:
String a="xiaoxie";
if(a.equals(b)){
System.out.println("a和B相等");
}
//字符串的大小比较:
String a="Ab";
String b="Ab";
int c=a.compareTo(b); //等于 0 大于正数 小于负数
- 基本数据类型,也称原始数据类型。byte、short、char、int、long、float、double、boolean 他们之间的比较,应用双等号(==),比较的是他们的值。
- 复合数据类型(类),当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地址,但在一些类库当中这个方法被覆盖掉了,如String、Integer、Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。 对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的,因为Object的equals方法也是用双等号(==)进行比较的,所以比较后的结果跟双等号(==)的结果相同。
Java常量
常量在程序运行时是不能被修改的。
在 Java 中使用 final 关键字来修饰常量,声明方式和变量类似,虽然常量名也可以用小写,但为了便于识别,通常使用大写字母表示常量。
final double PI = 3.1415927;
Java中的自动类型转换
整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。
转换从低级到高级。
低 ------------------------------------> 高
byte,short,char—> int —> long—> float —> double
数据类型转换必须满足如下规则:
-
不能对boolean类型进行类型转换。
-
不能把对象类型转换成不相关类的对象。
-
在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
-
浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如:
(int)23.7 == 23; (int)-45.89f == -45
自动类型转换
必须满足转换前的数据类型的位数要低于转换后的数据类型,例如: short数据类型的位数为16位,就可以自动转换位数为32的int类型,同样float数据类型的位数为32,可以自动转换为64位的double类型。
强制类型转换
-
条件是转换的数据类型必须是兼容的。
-
格式:(type)value type是要强制类型转换后的数据类型
注:强制类型转换后,如果超过类型的值,该数值就会发生变化。
参考文章:Java基本数据类型 | 菜鸟教程