昨天拜读了一下《Thinking In Java》翻译版,其中有一段话是这样的写,大概的意思是:java方法中的参数 为final类型的,则该参数所指的对象是不可以改变的,这个 翻译真是让人蛋疼的很。
那么我来聊聊这个话的意思:
1、 java 方法中的参数如果为基本数据类型或者String 时,相当于在参数前面自动加上了final,你在方法体内 对 参数的值进行修改,并不会影响方法调用出的变量。
2、 java 方法不能让对象参数引用一个新的对象。什么意思?代码举个例子
pubic class Test{
public void changeArguments(Bean bean){
bean.name = "kaobian";
bean = new Bean();
bean.name="go out";
}
public void static main(String[] args){
Bean bean = new Bean();
bean.name="hello world";
new Test().changeArguments(bean);
System.err.println("modify bean " + bean.name);
//返回的是kaobian而不是go out
}
}
class Bean {
public String name ;
public Bean(){
}
}
这就是说 java方法中的参数不可能改变这个变量所指向的内存地址。
3、java 方法中的参数为final 类型的 非基本类型应用,那么,我们是不可以改变参数所指向的内存地址,但是我们可以改变参数所指向对象的状态,也就是他的属性
这是我一点点才疏学浅的总结,希望高手指点
分享到:
相关推荐
### Java中的方法详解 在Java编程语言中,方法(Method)是执行特定任务的一段代码。本文将深入探讨Java中的方法概念,包括方法的基本...希望本文能为你提供对Java中方法概念的全面理解,并在实际开发过程中加以应用。
在Java编程中,线程池是一种管理线程资源的有效方式,它可以提高...在阅读《聊聊并发(3)Java线程池的分析和使用》这份文档时,你可以学习到更多关于线程池的实践技巧和案例分析,这对于提升Java开发能力大有裨益。
在同一类中,方法名相同但参数列表不同(参数类型、数量或顺序不同)的情况称为方法重载。 **递归调用:** 方法调用自身的过程称为递归调用。递归通常需要一个终止条件,避免无限循环。 #### 九、面向对象基础 **...
我们从System的源码中可以了解到System是java中的一个自定义的类,位于java.lang包下面。 Out是System里面的一个静态成员,他是java.io.PrintStream类的引用。他是个不可更改的类方法。并且是通过Static修饰的。...
3.有含代理的构造方法和不含代理的构造方法,可根据需要选择调用; 4.参数使用的是JSONObject,防止在用字符串拼接参数时出现各种特殊字符转义问题; 5.发送图片大小不超过2M(企业微信的规定)。 具体使用步骤见...
重载是实现同一个类中多个同名方法,参数不同;重写则是子类中实现与父类中具有相同签名的方法。 10. 多线程 多线程是Java支持并发编程的核心,提供了Thread类和Runnable接口来创建线程。多线程中需要注意线程安全...
这个Java库使得开发人员能够轻松地在Java应用中集成Matomo追踪功能,从而记录用户的点击、浏览和其他互动行为。通过HTTP API,数据被发送到Matomo服务器进行处理和存储,随后可以生成各种报表以供分析。 **Java实现...
它会详细列出各种接口的使用方法、参数说明以及返回值。阅读并理解这些文档,是成功对接的关键。文档中可能还包括错误码解释、示例代码等,有助于解决开发过程中遇到的问题。 6. **安全与性能优化**:在对接过程中...
在Java开发中,获取微信用户信息通常涉及到微信官方提供的OAuth2.0授权协议。OAuth2.0是一个开放标准,允许用户提供一个令牌,而不是用户名和密码来访问他们存储在特定服务提供者上的信息。这种方式允许用户授权第三...
泛型允许在类、接口和方法定义时指定参数类型,从而在编译阶段就能发现潜在的类型错误。使用泛型可以避免强制类型转换,同时提供更强的类型检查,使代码更易于理解和复用。 3. **反射**:反射是Java的一项强大功能...
Spring MVC 中 Controller 方法参数注解方式详解 在 Spring MVC 框架中,Controller 中的方法参数可以使用注解来标识,这些注解可以让开发者更方便地处理请求参数。今天,我们将深入探讨 Spring MVC 中 Controller ...
- **知识点**:澄清Java中参数传递的机制,即所有参数都是按值传递,但对于对象而言,传递的是指向该对象的引用的值,而非对象本身。 **1.6 JAVA面试题解惑系列(六)——字符串(String)杂谈** - **知识点**:...
它们包含了运行Java虚拟机(JVM)的命令行指令,如`java -cp`参数指定类路径,`MainClass`指定主类名。 通过这个Java聊天室项目,初学者不仅能学习到Java编程的基础知识,还能深入了解网络通信、多线程和GUI编程等...
重写(Override)发生在子类中,子类方法与父类方法同名,返回类型和参数列表必须完全一致。 4. **Java基本数据类型**:包括整型(byte、short、int、long)、浮点型(float、double)、字符型(char)和布尔型...
【Java基础第19天_01_实现单聊】这一主题主要涵盖了Java语言在网络通信中的应用,特别是如何实现简单的单聊功能。在Java中,网络编程是通过Socket编程来实现的,它允许两个或多个网络设备之间进行双向通信。在这个...
在Java中,WebSocket的实现主要依赖于`javax.websocket`库。开发者需要定义一个继承自`javax.websocket.Endpoint`的类,该类是WebSocket连接的起点,包含了连接建立、关闭以及消息接收和发送的方法。例如,`@...
这通常包括启动命令、连接参数、聊天窗口的使用方法、发送文件的步骤等。 总的来说,【java局域网聊天器】是一个很好的学习Java网络编程、IO流、多线程和Socket应用的实例,它的实现涉及到了Java编程的许多核心概念...
泛型是对Java语言类型系统的一种扩展,有点类似于C++的模板,可以把类型参数看作是使用参数化类型时指定的类型的一个占位符。引入泛型,是对Java语言一个较大的功能增强,带来了很多的好处: 1、类型安全。...