Java基础知识陷阱(二)
本文发表于本人博客。
上次说了一些关于字符串的知识,都是比较基础的,那这次也说下关于对象地址问题,比如传参。先看下面代码:
public void changeInt(int a){
a = ;
}
int a = ;
changeInt(a);
System.out.println(a);
我相信这个初学者也知道结果了,知道传的是值。那看下这个说出过程是如何的:
public void changestr(String str){
str = "www.luoliang.me";
}
String s = "luoliang.me";
changestr(s);
System.out.println(s);
这 样的代码我相信很多人也知道结果,但是问到具体过程如何好些人就不知道搞啥了包括当初我也是就简单的说了一两句完全没说到字符串池之类的点子上。这是描述 有关字符串内存转变的情况。首先我们知道先声明定义了一个参数为String的函数changestr,接着在字符串池中创建这 个"luoliang.me"(判断),创建完成之后接着调用了changestr方法,把s的地址就是在字符串池的"luoliang.me"地址给了 str变量,这个函数进行更改把str这个变量的指向重新指向另外一个"www.luoliang.me"的字符串,当然这个过程需要判断字符串池是否存在这个字符串。更改完后回来打印s的地址即是"luoliang.me"的地址。这个过程中,所有的字符串都未曾改变,因为是常量,改变的只是变量所指向的地址!
现在对于下面的代码我想就容易理解:
public class Test {
public static void changePoint(Point point){
point.x = 3;
point.y = 4;
}
public static void main(String[] args) {
Point point = new Point(1, 2);
System.out.println("x=" + point.x + ";y=" + point.y);
changePoint(point);
System.out.println("x=" + point.x + ";y=" + point.y);
}
}
class Point{
int x;
int y;
public Point(int x,int y) {
this.x = x;
this.y = y;
}
}


Java基础知识陷阱(二)的更多相关文章
- Java基础知识陷阱系列
Java基础知识陷阱系列 今天抽空把Java基础知识陷阱有关的文章汇总于此,便于大家查看. Java基础知识陷阱(一) Java基础知识陷阱(二) Java基础知识陷阱(三) Java基础知识陷阱(四 ...
- Java基础知识陷阱(九)
本文发表于本人博客. 今天我来说说关于JAVA多线程知识,有错误请指出.大家都知道JAVA在服务端上处理也有很大优势,很多公司也有在服务器跑JAVA进程,这说明JAVA在处理这个多线程以及并发下也有一 ...
- java基础知识(二)-----多态和构造函数
一:前言 最近由于面试了新浪公司,面试官问我的问题我都不知道,觉得自己好菜,所以最近决定再把java基础给搞一遍,真的觉得自己好菜.每天看一点,那个家伙说<java编程思想>最少要看三遍, ...
- Java基础知识陷阱(十)
本文发表于本人博客. 上个星期由于时间比较紧所以未能继续写下去,今天再接再厉,专心 + 坚持这样离目标就越来越近了!废话少说说正题,今天我们还是来说说java中比较基础的知识,大家知道编写java程序 ...
- Java基础知识(二)
一.基本概念 1. Java程序初始化的顺序是怎么样的 2. Java和C++的区别 3. 反射 先看一个知乎回答 什么是反射 主要用途 获得Class对象 4. 注解 什么是注解 为什么要用注解 基 ...
- Java 基础知识总结 (二、基本数据类型)
二.基本数据类型 java基本数据类型只能先声明后使用 boolean true/false char 16-bit unicode character byte 8-bit integer sho ...
- Java基础知识陷阱(四)
本文发表于本人博客. 今天我们来说说关于java继承以及反射有关的问题,大家先看下下面代码,试问可以编译通过不,为什么具体说说原因? public class Test{ public static ...
- Java测试开发--Java基础知识(二)
一.java中8大基本类型 数值类型:byte.short.int .float.double .long 字符类型:char 布尔类型:boolean 二. 封装:将属性私有化,不允许外部数据直接访 ...
- java基础知识(二)字符串处理
字符串是程序开发中使用最为频繁,因此为了工作的高效和作为一名想进阶的程序员,了解并掌握字符串的处理显得尤为重要.java为我们提供了String.StringBuffer.StringBuilde三个 ...
随机推荐
- javascript实现URL编码与解码
一.预备知识 URI是统一资源标识的意思,通常我们所说的URL只是URI的一种.典型URL的格式如下所示.下面提到的URL编码,实际上应该指的是URI编码. foo://example.com:804 ...
- error: Please reinstall the libcurl distribution - easy.h should be in <curl-dir>/include/curl/
运行php-5.3.10 --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --e ...
- php7垃圾回收分析
- Hibernate 自动生成数据库表
http://blog.csdn.net/u010096526/article/details/50533428
- WPF 纯代码生成界面(不使用XAML)
对于编写 WPF 应用程序,只是用代码进行开发而不使用任何 XAML 不是常见的方式(但是仍然完全支持).只使用代码进行开发的明显缺点是,有可能会使用编写 WPF 应用程序成为极端乏味的工作. WPF ...
- php 实现Iterator 接口
<?php class MyIterator implements Iterator{ private $var = array(); public function __construct($ ...
- Django学习笔记第二篇--关于请求获取
#细节都在代码段里面讲解 零.绪论: HTTP协议是一种请求响应的协议,一次请求一次响应.所以这部分的讲解将分为三个部分:请求获取,分析处理.返回响应. 一.获取请求数据: 1.POST和GET类型 ...
- LeetCode 笔记系列15 Set Matrix Zeroes [稍微有一点hack]
题目:Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. Fol ...
- 02.Elasticsearch入门
Elasticsearch支持Http类型的Restful风格API请求,需要打开9200端口.Elasticsearch服务会监听两个端口9200和9300,9200提供Http Restf ...
- java -jar后台启动
nohup java -jar XX.jar >logs.log &