0
点赞
收藏
分享

微信扫一扫

你真的了解java吗?java总结三

夕阳孤草 2022-04-21 阅读 70
java

1.String类

1.常见的创建方式

结果如下:

我们可以看到,如果构造方法中传入byte数组,会直接转移成对应的ASCII值

2.区别(面试)

  • “”方式创建的字符串,放入到字符串常量池中,而且只存储一份。
  • 通过构造器new出来的对象,放在堆中,对象不相同。

上述中的s1放在常量池,s2放在堆中,二者不相等。

输出结果如下:

3.String常见面试题

第一题:

        /*
          这句代码中一共创建了两个对象
          1.“”创建的对象放入到常量池中
          2.new创建的对象放入到堆中
         */
        String s1 = new String("123");

        /*
         下列代码中共创建了0个对象
         原因是,在上行代码中,已经创建了123字符串,并放入到字符串常量池中
         */
        String s2 = "123";
        /*
        结果显然不相同
         */
        System.out.println(s1==s2);

第二题:

        String s1 ="123";
        String s2 ="12";
        String s3 = s2 + "3";
        String s4 = "12" + "3";
        System.out.println(s1==s3);
        System.out.println(s1==s4);
        System.out.println(s3==s4);

说明:

这里的s1和s4都是由“”直接给出,所以是都是放在字符串常量池中。而s3是由s2运算而来,所以是放在堆内存中的。

因为java在编译阶段,s1和s4的值都是给定的,不会改变,java存在编译期优化机制,会将"12" + "3"直接转成"123",可以直接放入到串池中,而s3是由变量得到,编译期间无法确定变量值,所以放到堆中。

结果如下:

2.ArrayList

1.ArrayList的使用

ArrayList不同于数组,可以不指定长度,从而往里添加数据。

此时类型是泛型,可以存储任意类型数据,加对象也可以。

 2.常用API

3.面向对象进阶

1.static

static静态,可以修饰成员变量和成员方法。

static修饰成员变量表示该成员变量只在内存中存储一份,可以呗共享访问、修改。

静态成员变量:

        推荐使用:类名.成员变量的方法来访问

        不推荐使用:对象名.成员变量

静态方法与静态成员变量相同,都推荐使用类名访问。

当类加载到方法区时,会同时开辟一份堆内存,用来存储该类的静态变量。

使用场景:

        该变量(方法)以执行一个共用功能为目的,则可以申请成静态的。

2.代码块

3.单例模式

 懒汉式:

public class SingleInstance {
  /**
    懒汉式在使用时采取创建
   */
    private static SingleInstance instance;

    private SingleInstance(){};

    public SingleInstance getInstance(){
        if (instance == null){
            instance = new SingleInstance();
        }
        return instance;
    }
}

 饿汉式:

public class SingleInstance {
  /**
    饿汉式单例是在获取对象之前已经创建好一个,这个对象只能是一个
   */
    private static SingleInstance instance = new SingleInstance();

    private SingleInstance(){};
}

举报

相关推荐

0 条评论