Java String、ArrayList 、static 常见API及问题

103 阅读5分钟

 JavaBean

     1.   javaBean 也称为实体类,其对象可以用于在程序中封装数据。 

     2.   标准JavaBean需满足如下书写要求 ;

     3. 成员变量使用private修饰 ;

     4. 提供成员变量对应的setXxx()/getXxx()方法 ;

     5. 必须提供一个无参构造器;

  String 常见用法和面试题 

      1. String 是什么,可以做什么?

            字符串类型,可以定义字符串变量指向字符串对象。

      2. String 是不可变字符串的原因?

           a. String 变量每次的修改其实都是产生并指向新的字符对象。

           b. 原来的字符串对象都没有改变的,所以称为不可变字符串。

      3. 直接赋值和使用构造器的区别?

           1. 以 “” 方式给出的字符串对象,在字符串常量池中存储,而且相同内容只会存储一       份;  

           2. 通过构造器new对象,每new一次都会产生一个新对象,放在堆内存中。

 ArrayList 

        代表的时集合类,集合是一种容器,与数组类似,不同的是集合的大小是不固定的。 

        通过创建ArrayList 的对象表示得到一个集合容器,同时ArrayList提供了比数组更好用,更丰富的Api。 

特点: 

        1. 集合大小不固定,启动后可以动态变化,类型也可以选择不固定;

        2. 集合非常适合做元素不确定,且要增删操作的业务场景。 

数组和集合适合的场景: 

        数组适合数据个数和类型确定的场景 

       集合适合做个数不确定,且要做增删元素的场景。

ArrayList 集合 

       是集合的一种,它支持索引; 

       集合对象的获取 new ArrayList();

      添加集合元素的方法 

       1. add (E e),指定的元素追加到此集合的末尾; 

       2. add(int index, E element); 在此集合的指定位置插入指定元素; 

ArrayList 泛型的支持

   泛型概念 

         ArrayList: 其实就是一个泛型类,可以在编译阶段约束集合对象只能操作某种数据类型; 

 举例

        1. ArrayList :此集合只能操作字符串类型的元素 

        2. ArrayList: 此集合只能操作整数类型的元素, 

        注意: 集合中只能存储引用类型,不支持基本数据类型;

ArrayList 集合常用方法

       1. public E get(int index) : 返回指定索引处的元素;

       2. public int size() : 返回集合中元素的个数; 

       3. public E remove(int index): 删除指定索引处的元素,返回被删除的元素;

       4. public boolean remove(Object o) : 删除指定的元素,返回删除是否成功;只删除第一个出现的元素 ;

       5. public E set(int index,E element) : 修改指定索引处的元素,返回被修改的元素;

  1, 从集合中遍历元素,并筛选出元素删除它,应该怎么解决? 

       从集合后面遍历删除,可以避免漏掉元素;

       存储自定义类型的对象:集合中存储的元素并不是对象本身,而是对象的地址;

static 应用 

工具类

           类中都是一些静态方法, 每个方法都是以完成一个共用的功能为目的,这个类用来给系统开发人员共同使用; 调用方便,提高了代码复用。

工具类中的方法为什么不用实例方法; 

        1. 实例方法需要创建对象调用。

       2. 此时用对象只是为了调用方法,这样只会浪费内存;

定义时的要求: 由于工具里面都是静态方法,直接用类名即可访问,一次,工具类无需创建对象,建议将工具类的构造器进行私有;

 代码块 

        代码块时类的5大成分之一,定义在类中方法外 。

        在java类下,使用{} 括起来的代码称为代码块。

静态代码块

      格式 static {} 

      特点 需要通过static 关键字修饰,随着类的加载而加载,并且自动触发,只执行一次;

      使用场景 在类加载的时候做一些静态数据初始化的操作,以便后续使用;

构造代码块

      格式 {} 

      特点 每次创建对象,调用构造器执行时,都会执行该代码中的代码,并且在构造器执行前执行; 

      场景 初始化实例资源; 

 什么是设计模式

      开发中经常遇到一些问题,一个问题通常有n种解法,但其中肯定有一种解法是最优的,这个最优的解法被人总结出来,称之为设计模式。

 学设计模式主要学两点:

      1. 这种模式是解决什么问题 ;

      2. 遇到这种问题,该设计模式是怎么写的,是如何解决这个问题的。

单例模式

        可以保证史通中,应用该模式的这个类永远只有一个实例,即这个类永远只能创建一个对象。 

  1. 饿汉单例模式:在用类获取对象的时候,对象已经提前为你创建好了 。

    public class Singleinstance { private Singleinstance() {} public static Singleinstance instance = new Singleinstance(); }

实现步骤: 定义一个类,把构造器私有。 定义一个静态变量存储一个对象。 

2. 懒汉单例模式

        真正需要该对象的时候,才去创建一个对象(延迟加载对象)。

 public class Singleinstance {
     // 私有化构造器 
     private Singleinstance() { } 
     // 定义存储对象静态变量
     public static Singleinstance instance;
     // 定义一个生成对象的静态方法 
     public static Singleinstance getInstance() {
         if (instance == null) { 
            instance = new Singleinstance(); 
         } 
         return instance; 
     } 
} 

实现步骤 

    1. 定义一个类,把构造器私有;

    2. 定义一个静态变量存储一个对象 > 3. 提供一个返回单例对象的方法;