400-616-5551

您所在位置: 首页> 学习课程> java培训 | java中Stream类的源代码怎么实现?

java培训 | java中Stream类的源代码怎么实现?

发布百知教育 来源:学习课程 2019-10-15

String类的重要性


在实际项目以及面试过程中,String类都是热点、必学点。String是一个必须使用的程序类,可以说是项目的核心组成类。在Java程序里所有的字符串都要求是“”进行定义,同时也可以利用“+”实现字符串的连接处理,但是对于String类实际上还有其自身的特点,本文通过具体的实例和概念进行String类的特点分析。


String类对象实例化

定义


在Java中并没有字符串这一数据类型的存在,但是考虑到陈旭开发的需要,所以通过设计的形式提供了String类,并且该类的对象可以通过直接赋值的形式进行实例化的操作。

代码示例


实例1


  

public

 

static

 

void

 main

(

Stream

  args

[]){

      

String

 str

=

"欢迎关注Java编程中心"

;

//string类对象实例化

      

System

.

out

.

println

(

str

);

   

}

 

}

//执行结果

欢迎关注

Java

编程中心

观察Stream类的源代码实现


两者比较


说明:程序中对于字符串的实现都是通过数组的形式进行保存的,所以对于Stream类的内部也会保存有数组内容,这一点可以通过Stream类源代码观察到。


JDK1.8以前String保存的是字符数组private final char value[];

JDK1.9以后String保存的是字节数组 private final byte[] value[];

总结:为了方便读者比对JDK版本,在此给出了JDK1.8以前和JDK1.9之后的String类内部数组定义形式,可以发现JDK1.9之后Stream类中的数组类型为byte。这样就可以得出一个结论:字符串就是对数组的一种特殊包装应用,而对数组而言最大的问题在于长度固定。


String本身属于一个系统类,除了可以利用直接赋值的形式进行实例化之外,同时也提供了相应的构造方法进行实例化,构造方法定义如下:


String类的构造方法:public String(String str).


代码示例


实例2


  

public

 

static

 

void

 main

(

Stream

  args

[]){

      

String

 str

=

new

 

String

"欢迎关注Java编程中心"

;

//string类对象实例化

      

System

.

out

.

println

(

str

);

   

}

 

}

//执行结果

欢迎关注

Java

编程中心

字符串比较


基本数据类型的相等判断可以直接使用Java中提供的“==”运算符来实现,直接进行数值的比较。如果在Stream类对象上使用“==”比较的将不是内容,而是字符串的堆内存地址。


代码实例3


  

public

 

static

 

void

 main

(

String args

[]){

      

String

 strA

=

"欢迎关注"

;

//直接赋值定义字符串

        

String

 strB

=

new

 

String(

"欢迎关注"

);

//构造方法定义字符串

      

Stream

 strC

=

"编程中心"

;

      

Stream

 strC

=

strD

;

      

System

.

out

.

println

(

strA

=

strB

);

//false

      

System

.

out

.

println

(

strA

=

strC

);

//false

      

System

.

out

.

println

(

strC

=

strB

);

//false

      

System

.

out

.

println

(

strC

=

strD

);

//true

   

}

 

}

本程序在String类的对象上使用了“==”比较,通过结果发现对于同一个字符串采用不同方法进行String类对象实例化,并不是所有String类对象的地址值都是相同的。


对于字符串内容的判断,在String类中已经定义提供了相应的equals()方法,只需要通过String类实例化对象调用即可。该方法定义如下:字符串内容相等判断(区分大小写):public bolean equals(Object obj).


让心情去旅行


提示1:关于equals()方法的使用。在Stream类中定义的equals()方法里面需要接受的数据类型为Object,简单理解为,调用Stream类equals方法只需要传入字符串即可。


两者区别


关于“==”与equals()的区别使用。“==”是Java提供的关系运算符,主要功能是数值相等判断,比较的是内存地址。equals()是Stream类提供的一个方法,比较的是内容。



字符串常量


在程序中常量是不可以被改变的内容的统称,但是因为由于Java中的处理支持,所以可以直接使用“"”进行字符串常量的定义。而这种字符串的常量,严格意义上来讲是String类的匿名对象。


关于字符串对象池


实际上,在JVM底层存在有一个对象池(String只是对象池中保存的一种类型,此外还有多种其它类型)。当代码使用了直接赋值的方式定义了一个String类对象时,会将此字符串对象所使用的匿名对象入池保存,如果后续还有其它String类对象也采用了直接赋值的方式,并且设置了同样内容,那么将不会开辟新的内存空间,而是使用了已有的对象进行引用的分配,从而继续使用。



java培训学校:http://www.baizhiedu.com/java2019



上一篇:java培训学校 | java编程思想--内部类

下一篇:应届生去公司找个Java程序员的职位需要什么技能?

相关推荐

www.baizhiedu.com

有位老师想和您聊一聊

关闭

立即申请