虽然 Java 语言是典型的面向对象编程语言,但不是“纯面向对象”,其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备“对象”的特性——不携带属性、没有方法可调用,为了解决这个不足,Java在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类。
基本类型和对应的包装类可以相互转换,下面以Integer为例,来进行操作:
public class Test {
public static void main(String[] args) {
//基本数据类型专程包装类对象,比如下面3
Integer a=new Integer(3);
Integer a1=Integer.valueOf(15);
//把包装类转成基本数据类型
int c=a1.intValue();//父类提供
double d=a1.doubleValue();
//把字符串转成包装类对象
Integer e=new Integer("999");//如果后面跟了非数字的字符串则不能转
//把包装类对象转成字符串
String s=e.toString();//""+f
//常见常量
System.out.println("int类型最大的整数:"+Integer.MAX_VALUE);
}
}
Java中的自动装箱与拆箱,其实描述的是,从基本数据类型转换为包装类和从包装类转换为基本数据类型的动作,是Java虚拟机自动帮我们进行的包装类与基本数据类型之间的转换。。代码如下:
public class Test1 {
public static void main(String[] args) {
Integer a=234;//自动装箱
int a1=a;//自动拆箱
Integer a2=null;
int a3=a2;//调用了空指针,会出现空指针异常
//缓存【-128,127】之间的数字,实际就是系统初始的时候,创建的一个含【-128,127】的数组
Integer b=-122;
Integer b1=-122;
System.out.println(b==b1);
System.out.println(b.equals(b1));
Integer b2=1234;
Integer b3=1234;
System.out.println(b2==b3);
System.out.println(b2.equals(b3));
}
}
String类,我们可以将String类对象称为“不可变对象”,指对象内部的成员变量无法再改变。string本身是不可改变的,它只能赋值一次,每一次内容发生改变,都会生成一个新的对象。
StringBuilder、StringBuffer两个类都继承自抽象类AbstractStringBuilder,它们是可变的,我们可以通过它提供的方法(如append(),insert()等)通过直接修改字符序列来完成对字符串的操作。
StringBuilder与StringBuffer用法基本一致,但由于StringBuffer为线程安全的,效率较低。StringBuilder没有实现线程安全,则效率略高。通常情况下,使用StringBuilder。
相关用法:
public class Tests {
public static void main(String[] args) {
String s="hello"+"java";//系统做出优化为hello java
String s1="hellojava";
System.out.println(s==s1);
String s2="hello";
String s3="java";
String s4=s2+s3;
System.out.println(s4==s1);
}
}
public class Testsb {
public static void main(String[] args) {
StringBuilder sb=new StringBuilder("abcdef");
System.out.println(Integer.toHexString(sb.hashCode()));
System.out.println(sb);
sb.setCharAt(2,'w');
System.out.println(Integer.toHexString(sb.hashCode()));
System.out.println(sb);
}
}
public class Testsb1 {
public static void main(String[] args) {
StringBuilder ss=new StringBuilder();
for(int a=0;a<26;a++){
char t=(char)('a'+a);
ss.append(t);//在后面添加
}
System.out.println(ss);
ss.reverse();//倒序
System.out.println(ss);
ss.setCharAt(2,'Q');
System.out.println(ss);
ss.insert(1,'我');
System.out.println(ss);
ss.delete(20,23);
System.out.println(ss);
}
}