javaSE---三个特殊的类

1.String类

1.String有两种实例化方式:

(1).直接赋值:

String str = "Hello,world";

"Hello,world"应该保存在堆内存中

(2).构造方法实例化对象:

String str = new String("Hello,world";

2.字符串相等比较:

“==”比较其地址;(“==”本身是进行数值比较的,如果用于对象比较,则比较的就是两个对象保存的内存地址数值,而没有比较内容;

equals() 比较其内容;

小技巧:在开发中,若要判断用户输入的字符串是否等同于特定字符串,一定要将特定字符串写在前面;

采用构造方法创建String实例化对象时,没new一次,就会在堆上开辟两块空间(有一块为垃圾空间);

采用字符方法产生的字符对象不会自动入池;

String提供手动入池操作intern();

3.字符串常量不可变更,可变更的是引用!

4.字符与数组的相互转化:

将字符数组中的所有内容变为字符串       public String(char value[])

将部分字符数组中的内容变为字符串       public String (char value[],int offset,int count)

取得指定索引位置的字符,从0开始        public char charAt(int index)

将字符串变为字符数组返回                   public char[] toCharArray()

5字节与字符串相互转换;

6.字符串比较:

equals()            区分大小写比较

equalsIgnoreCase()      不区分大小写比较

compareTo()               比较两个字符串大小关系(相等返回0,大于返回内容大于0,小于返回内容小于0)

7.字符串查找:

contains 判断一个子字符串是否存在;(最好最方便的方法)

indexOf  从头开始查找指定字符串的位置,查到了返回位置的开始索引,查不到返回-1;

lasIindexOf  从后向前查找;

startsWith  判断是否以指定字符串开头;

endsWith  判断是否以指定字符串结尾;

8.字符串替换:

replaceAll  替换所有的指定内容

replaceFirst  替换首个内容

9.字符串拆分:

两种拆分方式;

//字符串拆分;
public class Test{
    public static void main(String[] args){
        String str = "hello world hello java hello";
        String[] result = str.split(" ");//将字符串全部拆分
        for(String s: result){
            System.out.println(s);
        }
        String[] Str = str.split(" ",3);//将字符串部分拆分,数组长度指定
        for(String s: Str){
            System.out.println(s);
        }
    }
}

若发现有些内容无法拆分开就需要用“\\"转义,例如拆分IP地址;

10.字符串截取:

substring

String str = "hello,world,hehehe!";
        System.out.println(str.substring(2));//字符串截取
        System.out.println(str.substring(2,8));

11.字符串其他操作方法:

toUpperCase()        字符串转大写

toLowerCase()        字符串转小写

length()                  取得字符串长度

isEmpty                  判断是否为空字符串,但不是null,是长度为0;(true/false)

StringBuffer 类

在String中使用“+”来进行字符串连接,但在StringBuffer中需要更改为append()方法;

StringBuffer sb = new StringBuffer();
        sb.append("Hello").append("World");//字符串连接
        System.out.println(sb);

StringBuffer中一些特有的方法:

字符串反转;

reverse();

StringBuffer sb = new StringBuffer();
        sb.append("Hello").append("World");//字符串连接
        System.out.println(sb);
        System.out.println(sb.reverse());//字符串反转。

删除指定范围的数据;

delete(int start,int end);

System.out.println(sb.delete(2,5));//删除指定范围内的数据

插入数据;

insert(int offset,各种类型的数据);

System.out.println(sb.insert(0,"你好"));//插入各种类型的数据

面试题:请解释String、StringBuffer、StringBuilder的区别;

1.String的内容不可修改;

2.StringBuffer采用同步处理,属于线程安全操作;而StringBuilder采用异步处理,属于线程不安全操作;

3.String类的修改操作“+”,JVM底层会将String变为StringBuffer处理,减少垃圾空间的产生;

2.Object类

Object是java默认提供的一个类,Object是所有类的默认父类;

Object可以接受所有类的对象(向上转型)

Object定义的一些方法:

toString();   取得对象信息

equals();      对象比较

例如,使用Object来接受数组对象

public static void main(String[] args){
        //Object接受数组类型,向上转型
        Object obj = new int[]{1,2,3,4,5,6,7,8};
        //向下转型,需要强转
        int[] data = (int[])obj;

Object真正达到了参数的统一。

3.包装类

包装类就是将基本数据类型装到类中;

对象型包装类(Object类的直接子类)
Boolean(bool的包装类)、Character(char的包装类)

数值型包装类(Number类的直接子类)
Integer(int)、Short(short)、Long(long)、Byte(byte)

Float(float)

3.1装箱与拆箱

装箱:将基本数据类型变为包装类对象,利用每一个包装类提供的构造方法实现装箱处理;

拆箱:将包装类中包装的基本数据类型取出;

例:

Integer num = new Integer(55);//装箱
int data = num.intValue();//拆箱
System.out.println(data);

在JDK1.5后,提供了自动拆装箱机制;

Integer x = 55;

所有的相同类型的包装对象之间值的比较,全部使用equals方法;


对于Integer ==?(自动装箱)-128~127之间赋值,Integer对象会在Integer常量池产生,会复用已有对象,这个区间的Integer值可以直接使用

“==”判断。这个区间以外的所有值,都在堆上产生,不回复用对象,使用equals比较;

3.2字符串与基本数据类型转换;

parse类型

例如:

 String str = "123";
        int num = Integer.parseInt(str);//将字符串变为int型
        double op = Double.parseDouble(str);//变为double型
        boolean nmm = Boolean.parseBoolean(str);//变为boolean型
        System.out.println(nmm);








猜你喜欢

转载自blog.csdn.net/ChenGX1996/article/details/80929764