「java方法链」java 方法调用链

博主:adminadmin 2023-03-22 18:59:08 537

今天给各位分享java方法链的知识,其中也会对java 方法调用链进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

JAVA的疑问

这段代码很无聊,leaf.increament().increament():java支持方法链,这样写没意义,可以无限循环。

首先你对面向对象还不太理解,这点很重要,你不理解这个就看不懂代码。搞清楚什么是类,什么是对象,类是对象的抽象概念,对象是它的实体。一个类可以通过new运算符产生无数个对象。类里面除了static标记的变量和方法在内存里面是所以对象共享的外,其他没有标记的是类独有的,即一个变量i和方法没有static标记,那个通过new的对象i的内存地址是不同的。

Leaf (int i) (this.i = i);这应该写错了,Leaf (int i) {this.i = i};这样编译才不会报错,Leaf是这个类的名字,每个类都有一个默认为类名字的构造方法,可以重载这个构造方法,这样就可以带参数了。这样的目的是在类初始化的时候给它一个编程需要的参数。

Leaf increament(){

i++;

return this;

} 这个方法的目的是每调用一次方法,i+1,因为i是成员变量,所以在对象里面它是全局的。然后这个方法返回类本身的引用。所以可以leaf.increament().increament(),因为对象持有实际是它内存地址的引用,leaf.increament()告诉程序这个方法调用玩后,返回对象本身的内存地址,然后继续调用这个方法。

如何应用Java的链式方法调用

StringBuffer就可以简单的描述该方法使用方式!

写个小例子吧,看一眼就明白怎么回事了!

因为StringBuffer的append这个方法每调用一次,返回依然还是StringBuffer这个容器本身对象,所以可以继续调用!当然有的类的方法也可以这么调用!

这只是一个小案例,用来解释是怎么回事,链式用的地方太多了!

请详细说一下java中append()的方法.

Java中的append( )方法其实是创建了一个新的数组,扩大了长度,将需要添加的字符串给复制到这个新的数组中。

JAVA中Stringbuffer有append( )方法:

而Stringbuffer是动态字符串数组,append( )是往动态字符串数组添加,跟“xxxx”+“yyyy”相当‘+’号。

跟String不同的是Stringbuffer是放一起的,String1+String2和Stringbuffer1.append("yyyy")虽然打印效果一样,但在内存中表示却不一样、

String1+String2 存在于不同的两个地址内存,Stringbuffer1.append(Stringbuffer2)放再一起。

StringBuffer是线程安全的,多用于多线程。

扩展资料

查看StringBuffer的append()方法

如图所示代码:

1、进入append方法

@Override

public synchronized StringBuffer append(String str) {

toStringCache = null;

super.append(str);

return this;

}

其中toStringCache是Cleared whenever the StringBuffer is modified.

2、进入AbstractStringBuilder的append()方法

public AbstractStringBuilder append(String str) {

if (str == null)

return appendNull();

int len = str.length();

ensureCapacityInternal(count + len);

str.getChars(0, len, value, count);

count += len;

return this;

}

如果参数str为空返回appendNull(); 该方法最终返回return this.

3、进入ensureCapacityInternal()方法

private void ensureCapacityInternal(int minimumCapacity) {

// overflow-conscious code

if (minimumCapacity - value.length 0) {

value = Arrays.copyOf(value,

newCapacity(minimumCapacity));

}

}

copyOf(char[] original, int newLength)的方法查JDK帮助文档可知:复制指定的数组,复制具有指定的长度。

4、进入String的getChars()方法

public void getChars(int srcBegin, int srcEnd, char dst[], int dstBegin) {//0,len=5,value=[hello],count=5

if (srcBegin 0) {

throw new StringIndexOutOfBoundsException(srcBegin);

}

if (srcEnd value.length) {

throw new StringIndexOutOfBoundsException(srcEnd);

}

if (srcBegin srcEnd) {

throw new StringIndexOutOfBoundsException(srcEnd - srcBegin);

}

System.arraycopy(value, srcBegin, dst, dstBegin, srcEnd - srcBegin);

}

5、最终调用的是System.arraycopy的方法:

public static void arraycopy(Object src,

int srcPos,

Object dest,

int destPos,

int length)

/*src - 源数组。

srcPos - 源数组中的起始位置。

dest - 目标数组。

destPos - 目的地数据中的起始位置。

length - 要复制的数组元素的数量。

*/

System.arraycopy([world], 0, [hello], 5, 5);

将指定源数组中的数组从指定位置复制到目标数组的指定位置。

参考资料:百度百科-append

JAVA的XX.put中的put方法,是在哪个父类或祖父类中,详述父类链。

put

public

V

put(K key,

V value)

在此映射中关联指定值与指定键。如果该映射以前包含了一个该键的映射关系,则旧值被替换。

指定者:接口

MapK,V

中的

put覆盖:类

AbstractMapK,V

中的

put参数:key

-

指定值将要关联的键value

-

指定键将要关联的值返回:与

key

关联的旧值;如果

key

没有任何映射关系,则返回

null。(返回

null

还可能表示该映射之前将

null

key

关联。)

java方法链的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java 方法调用链、java方法链的信息别忘了在本站进行查找喔。