首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

关于java

有一个比较经典例子,如果你能说出此题结果,说明你是java内存解析能手: public class Test1 { public static class ParamTest { // 初始值为...public void add(int i) { i += 10; } // 改变方法参数属性值 public void add(ParamTest pt) {...通过内存图,我们可以很清楚地看到,t.num值始终都是0,到最后执行add(ParamTest pt)之后其值才变成20,至于前面的三个方法执行结果都是针对简单变量,或其他对象num属性,要理解这个例子...,我觉得理解参数变量值机制很重要,参数是简单变量,则采用值传递,是引用类型变量,则采用引用地址传递。...而add(ParamTest pt)与change(ParamTest pt)采用引用传递,方法对传入引用所指向对象进行操作。 内存图画得似乎不是很详细,希望和有兴趣的人多多交流。

1.8K70

Java函数机制

我就打算好好理一理java机制,整理一番 二 很多人一听Java,那一定会脱口而出,java都是值传递。恭喜各位,答对了。 那么,是什么值?...如果参数类型是原始类型,那么传过来就是这个参数一个副本,也就是这个原始参数值,这个跟之前所谈值是一样。如果在函数中改变了副本值不会改变原始值....如果参数类型是引用类型,那么传过来就是这个引用参数副本,这个副本存放是参数地址。如果在函数中没有改变这个副本地址,而是改变了地址中 值,那么在函数内改变会影响到传入参数。...如果在函数中改变了副本地址,如new一个,那么副本就指向了一个新地址,此时传入参数还是指向原来 地址,所以不会改变参数值。...(4)方法结束,返回结果使堆list1,放进了 1 , 2 。list2 因为在方法内中途有新实例, 只放进了 1 ,而没有 2。

1.6K20

、指针、引用区别

在C中,我们只了解到有两种方式,一种是值传递,另外一种是传递指针,一般情况下我们选择使用指针传递参数。在C++中,又新增了一种方式,那就是引用(type &),引用给我们带来了更好体验。...并且在函数内部还可以通过指针修改指针指向地址中数据以作为传出数据作用。 3、引用传递 引用作为一个变量别名,相当于一段内存引用。...又取得指针优良特性。所以再对引用取地址,建立引用指针没有意义。...int tmp = ra; ra = rb; rb = tmp; } int main(int argc, char* argv[]) { int x = 10; int y = 20; // 指针...// swap(&x, &y); // 引用 swap(x, y); cout << x << “–” << y << endl; getchar(); return 0; }

15540

Java项目如何优雅

1.直接 不宜直接参数量不宜过多 @RestController @RequestMapping("/index") public class IndexController {...此处省略 } 虽然解决了直接问题,但是又引入新缺陷。...而且其中if 写了这么多,典型代码中具有“坏味道”特征 我们可以如何修改它呢 这里可以用到Java8一个新特性Optional 类。...Optional 类主要解决问题是臭名昭著空指针异常(NullPointerException) —— 每个 Java 程序员都非常了解异常。...问题 如果有类似于Swagger这种API工具,调用界面 什么也看不出来,如果没有测试用例瞬间就会问候原作者,所以为了少让接手人骂我们,时候最好先定义一个参数实体。

62430

String按值传递,java都是

java中对象作为参数传递给一个方法,到底是值传递,还是引用传递? String和int参数传递是按值传递还是引用传递?...Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数值就是该对象引用一个副本。...指向同一个对象,对象内容可以在被调用方法中改变,但对象引用(不是引用副本)是永远不会改变。  java传递参数都是值,如果是对象的话,就是将引用值复制一份给方法当参数。...如果跟着步骤一步步走,肯定牢记住了: java所有的参数传递都是传递副本,变量所代表副本!java所有的参数传递都是传递副本,变量所代表副本!...java所有的参数传递都是传递副本,变量所代表副本! 这里必须记住就是副本概念。

2.2K60

python中函数序列传,列表拆解、字典拆解

---- 本节教程视频 一、函数列表 列表举例 [“a”,”b”,”c”] 其实在使用列表时候比较简单,只需要将实际列表作为参数传入到调用函数中时候,在列表变量前加上一个星号*即可把某个列表拆分成多个参数传入到自定义函数中...其实在这里,我们如果想要将列表拆解成多个参数进行传入时候,我们必须就是要定义一个可变参数,而定义可变参数时候,我们必须要加上一个* 本质:列表拆解传入时候 ,自定义函数参数个数必须要支持实际拆解调用函数...二、函数字典 类似于列表拆解,只不过在传入参数前面加上两个*,也即使说使用双星号** 举例: dic1={"name":"老刘","work":"程序员","微信公众号":"编程创造城市"}...三、知识总结: 函数序列传 1.列表拆解,可以使用*,也可以省略,具体要看传入参数数量作为本质条件。...2.掌握字典拆解,使用**,具体使用方法类似于列表 本节源代码 #对比可变参数与列表区别 #可变参数情况 # def P(*s1): # for v in s1: #

9.9K21
领券