Java 数据类型
· 基本数据类型:byte、short、int 、long、float、double、char、boolean
· 引用类型:类,String(也一种类)
Java设计中,一直提倡一个原则:一切皆对象,而基本数据类型不是对象
为了改变这种状况可以将基本对象作为类的属性包装起来。这种操作被称为 装箱
Java提供了8个包装类:
数值(Number子类)类:Byte(byte)、Short(short)、Integer(int)、Long(long)、Float(float)、Double(double);
对象(Object子类)类:Boolean(boolean)、Character(char);
将包装类变成基本数据类型 拆箱 :[基本数据类型]Value() 例:intValue()、floatValue()
Integer var = new Integer(10); //装箱 int result = var.intValue(); //拆箱JDK1.5 以后,Java提供了自动装箱、拆箱操作
Integer var = 10; //自动装箱 System.out.println(var); //自动拆箱因为有了自动装箱、自动拆箱操作,Object才可以接收基本数据类型的数据。
对于包装类,由于自动装箱拆箱,也和String类一样,存在两种实例化操作:
一种直接赋值,一种通过构造方法赋值;而通过直接赋值方法实例化的包装类对象可以自动入池。
Integer x = new Integer(10); //开辟新空间 Integer y = 10; //入池 Integer z = 10; System.out.println(x == y); //false “==”操作会判定地址操作 System.out.println(x == z); //false System.out.println(y == z); //true System.out.println(x.equals(y));//true使用包装类将字符串转变成指定数据类型:
Integer.parseInt(str) Double.parseDouble(str) Boolean.parseBoolean(str) .......
(转成Boolean时,如果字符串中的内容不是"true"或"false",统一按照false处理)
Java主要的四个内存区域
栈内存空间:保存所有对象的名称(保存了引用的堆内存的地址)
堆内存空间:保存对象的具体内容(栈地址指向的内容)
全局数据区:保存static类型的属性
全局代码区:保存所有的方法定义
String类
String创建字符串后,字符串不可改变,连接/改变 字符串会重新创建一个新的字符串再赋值
字符串直接赋值会放入对象池,String类设计时采用共享设计模式概念,在每一个运行中的JVM底层都存在一个字符串的对象池(Object Pool),以供其他继续使用直接赋值方式的String对象使用。
String str = new String("Hello"); 构造方法赋值,首先会创建一个字符串"Hello"堆内存空间,new再开辟一个堆内存空间,最后使用的是new关键字开辟的堆内存,而之前定义的字符串常量的堆内存空间将不会有任何栈内存指向,成为垃圾等待GC回收。
boolean str1.equals(str2) ;表示判断str1和str2内容是否相等(不判断地址),"=="判断内容和地址是否相同
boolean str1.equalsIgnoreCase(str2);不区分大小写的比较
int str1.compareTo(str2);计算方式str1-str2,按每个字符
void str1.intern();表示字符串手动入池(对象池)
char str1.charAt(int index);取出字符串索引为index的字符
String new String(char[] value, int offset, int count);new String (char[] value);字符数组转字符串 (构造方法)
char[] str1.toCharArray();将字符串转变成字符数组
String new String(byte[] bytes, int offset, int count);new String (byte[] bytes);字节数组转字符串 (构造方法)
byte[] str1.getBytes();将字符串转变成字节数组
