天天看点

String,权限修饰符,方法,集合

String,权限修饰符,方法,集合

面试题目:这个语句创建了多少个对象?

这个答案为<code>1</code>或者<code>2</code>,因为如果<code>"dashu"</code>这个字面值如果在常量池中已经出现过,那么就只创建一个对象,如果没有出现过就会创建两个对象,<code>new</code>的出现一定会有一个对象被创建,所有确保有一个对象被创建.

为啥<code>str1 == str2</code>相等,是因为在编译的时候已经为<code>"dashu"</code>字面值,已经拼接好了,所以进行比较时,就会相等.
原理是通过<code>stringbuilder</code>的拼接方法,然后在调用<code>toString()</code>方法.

在<code>String</code>中有一个<code>intern()</code>方法,它返回的是常量池中字面值的地址,如果在常量池中没有这个字面值,就会把这个字面值先加到常量表后,返回这个字面值的地址.

把上面的代码添加<code>intern()</code>试试:

实例方法是什么呢?不用<code>static</code>添加修饰的方法就是了,访问实例方法,只能通过创建对象进行访问.

什么是类方法呢?就是用<code>static</code>添加修饰的方法就是了,访问这个方法可以通过创建对象进行访问,也可以通过类名进行调用进行访问.

方法的重载:方法名一样,参数名不一样

重载的出现就是为了解决操作同种方法的动作,但是类型不同的功能需求.

方法的重载为编译时的多态
方法的多态,复写父类的方法.方法的参数不一样为重载,一样为复写.

变量的介绍格式: <code>变量类型 + 变量名</code>

变量的作用是用来存储信息的容器

集合也是容器,把拥有相同类型的变量存储起来的,集合类型 + 集合名字.

举例:

集合中的常用方法:

<code>Collection&lt;E&gt;</code>
size():返回类型为<code>int.</code> isEmpty():返回类型为<code>boolean.</code> contains(Object):返回类型为<code>boolean.</code> iterator():<code>Iterator&lt;E&gt;</code> toArray():<code>Object[]</code> toArray(T[])&lt;T&gt;:<code>T[]</code>
add(E):返回类型为<code>boolean</code> remove(Object):返回类型为<code>boolean</code> containsAll(Collection&lt;?&gt;):返回类型为<code>boolean</code> addAll(Collection&lt;? extends E&gt;):返回类型为<code>boolean</code> removeAll(Collection&lt;?&gt;):返回类型为<code>boolean</code> retainAll(Colleciton&lt;?&gt;):返回类型为<code>boolean</code> clear():返回类型为<code>void</code> equals(Object):返回类型为<code>boolean</code> hashCode():i返回类型为<code>int</code>
spliterator():<code>Spliterator&lt;E&gt;</code> stream():<code>Stream&lt;E&gt;</code> parallelStream():<code>Stream&lt;E&gt;</code>

接口的定义:<code>public abstract 返回类型 方法名(参数)</code>,从<code>jdk1.8</code>开始可以实现方法了,用<code>default</code>修饰.

这个特性的引入是为了扩展接口中的方法

源码:

String,权限修饰符,方法,集合