美文网首页Java 杂谈程序员
第52节:String,权限修饰符,方法,集合

第52节:String,权限修饰符,方法,集合

作者: 魔王哪吒 | 来源:发表于2018-09-29 08:29 被阅读33次
标题图

String

String str1 = "dashu";
String str2 = "dashu";
String string = new String("dashu");
System.out.println(str1 == string);
// 结果为 false

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

new String("dashu");

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

String str1 = "dashu";
String str2 = "da" + "shu";
System.out.println(str1 == str2);
// 结果为 true

为啥str1 == str2相等,是因为在编译的时候已经为"dashu"字面值,已经拼接好了,所以进行比较时,就会相等.

String str1 = "dashu";
String str2 = "da";
String str3 = str2 + "shu";
System.out.println(str1 == str3);
// 结果为 false

原理是通过stringbuilder的拼接方法,然后在调用toString()方法.

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

把上面的代码添加intern()试试:

String str1 = "dashu";
String str2 = "da";
String str3 = str2 + "shu";
System.out.println(str1 == str3.intern());
// 结果为 true

权限修饰符

class Chirld{
 public void publicMethod(){
  // public为任何地方都可以通过子类的对象进行访问
 }
 protected void protectedMethod(){
  // protected为私有方法,只能在子类中进行访问
 }
 private void privateMethod(){
  // private为只能在本来进行访问,除了子类可以调用,其他都不可以进行访问这个方法
 }
}

public Father extends Chirld{
 public static void main(String[] args){
  new Father().publicMethod();
  new Father().protectedMethod();
 }
}

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

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

方法

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

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

public Father extends Chirld{
 public static void main(String[] args){
  publilc void add(int a){
   System.out.println(a+1);
  }
  publilc void add(long b){
   System.out.println(b+1);
  }
 }
}

方法的重载为编译时的多态

// 
class GuoWang{
 public void add(){
  System.out.println("GuoWang");
 }
}
// 
public class DaShu extends GuoWang{
 public void add(){
  System.out.println("DaShu");
 }
 public static void main(String[] args){
  // 变国王
  GuoWang gw = new DaShu();
  gw.add();
 }
}
// DaShu

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

变量的介绍格式: 变量类型 + 变量名

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

集合

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

Collection
-> List -> ArrayList LinkedList
-> Set -> hashSet treeset
Map
-> hashmap
-> treemap

举例:

// 源码
public interface List<E> extends Collection<E>{
 int size();
 boolean isEmpty();
 ....
}
public interface Collection<E> extends Iterable<E>{
 int size();
 boolean isEmpty();
 ...
}

集合中的常用方法:

Collection<E>

size():返回类型为int.
isEmpty():返回类型为boolean.
contains(Object):返回类型为boolean.
iterator():Iterator<E>
toArray():Object[]
toArray(T[])<T>:T[]

add(E):返回类型为boolean
remove(Object):返回类型为boolean
containsAll(Collection<?>):返回类型为boolean
addAll(Collection<? extends E>):返回类型为boolean
removeAll(Collection<?>):返回类型为boolean
retainAll(Colleciton<?>):返回类型为boolean
clear():返回类型为void
equals(Object):返回类型为boolean
hashCode():i返回类型为int

spliterator():Spliterator<E>
stream():Stream<E>
parallelStream():Stream<E>

default Stream<E> stream(){
 return StreamSupport.stream(spliterator(), false);
}

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

interface Student{
 void go();
 default void dohomework(){
  System.out.println("dohomework");
 }
}
// 实现接口
public class Dashu implements Student{
 public static void mian(String[] args) throws Exception{
 new Dashu().dohomework();
 }
 @Override
 public void go(){}
}

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

源码:

public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E>
public class ArrayList<E> extends AbstractList<E>
implements List<E>,RandomAccess,Cloneable,java.io.Serializable
Collection<T>接口 -> AbstractCollection<E>
List<T>接口 -> AbstractList<E>

往后余生,唯独有你
简书作者:达叔小生
90后帅气小伙,良好的开发习惯;独立思考的能力;主动并且善于沟通
简书博客: https://www.jianshu.com/u/c785ece603d1

结语

  • 下面我将继续对 其他知识 深入讲解 ,有兴趣可以继续关注
  • 小礼物走一走 or 点赞

相关文章

  • 第52节:String,权限修饰符,方法,集合

    String 面试题目:这个语句创建了多少个对象? 这个答案为1或者2,因为如果"dashu"这个字面值如果在常量...

  • 二十二、各修饰符的使用细节

    常用来修饰类、方法、变量的修饰符如下: public 权限修饰符,公共访问 protected 权限修...

  • JAVA基础

    1.基本结构:public static void main(String[] args) {权限修饰符、静态修饰...

  • JAVA(6)方法

    方法 语法:访问修饰符 返回值类型 方法名(参数列表){//方法体} 访问修饰符:方法允许被访问的权限范...

  • Java访问控制修饰符

    访问控制修饰符: 用来控制对类、方法和变量访问权限的修饰符。Java 支持 4 种不同的访问权限: default...

  • 集合转 String 通用方法

    集合转 String 通用方法 public static String collectionToStrings(...

  • JAVA 核心笔记 || [4.0] String

    String 类的构造方法 上篇 : 修饰符|String(String original)初始化一个新创建的 S...

  • 修饰符

    权限修饰符 状态修饰符 final 关键字是最终的意思,可以修饰成员方法,成员变量,类 l修饰方法:表明该方法是最...

  • Java入门第一季第七章

    方法: 1、 访问修饰符:方法允许被访问的权限范围, 可以是 public、protected、private 甚...

  • Java修饰符总结

    分类 Java语言提供了很多修饰符,大概分为两类: 1.访问权限修饰符 2.非访问权限修饰符 访问权限修饰符 1....

网友评论

    本文标题:第52节:String,权限修饰符,方法,集合

    本文链接:https://www.haomeiwen.com/subject/lwzmoftx.html