本文发表于本人博客

上次说了一些关于字符串的知识,都是比较基础的,那这次也说下关于对象地址问题,比如传参。先看下面代码:

    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基础知识陷阱(二)的更多相关文章

  1. Java基础知识陷阱系列

    Java基础知识陷阱系列 今天抽空把Java基础知识陷阱有关的文章汇总于此,便于大家查看. Java基础知识陷阱(一) Java基础知识陷阱(二) Java基础知识陷阱(三) Java基础知识陷阱(四 ...

  2. Java基础知识陷阱(九)

    本文发表于本人博客. 今天我来说说关于JAVA多线程知识,有错误请指出.大家都知道JAVA在服务端上处理也有很大优势,很多公司也有在服务器跑JAVA进程,这说明JAVA在处理这个多线程以及并发下也有一 ...

  3. java基础知识(二)-----多态和构造函数

    一:前言 最近由于面试了新浪公司,面试官问我的问题我都不知道,觉得自己好菜,所以最近决定再把java基础给搞一遍,真的觉得自己好菜.每天看一点,那个家伙说<java编程思想>最少要看三遍, ...

  4. Java基础知识陷阱(十)

    本文发表于本人博客. 上个星期由于时间比较紧所以未能继续写下去,今天再接再厉,专心 + 坚持这样离目标就越来越近了!废话少说说正题,今天我们还是来说说java中比较基础的知识,大家知道编写java程序 ...

  5. Java基础知识(二)

    一.基本概念 1. Java程序初始化的顺序是怎么样的 2. Java和C++的区别 3. 反射 先看一个知乎回答 什么是反射 主要用途 获得Class对象 4. 注解 什么是注解 为什么要用注解 基 ...

  6. Java 基础知识总结 (二、基本数据类型)

    二.基本数据类型 java基本数据类型只能先声明后使用 boolean  true/false char 16-bit unicode character byte 8-bit integer sho ...

  7. Java基础知识陷阱(四)

    本文发表于本人博客. 今天我们来说说关于java继承以及反射有关的问题,大家先看下下面代码,试问可以编译通过不,为什么具体说说原因? public class Test{ public static ...

  8. Java测试开发--Java基础知识(二)

    一.java中8大基本类型 数值类型:byte.short.int .float.double .long 字符类型:char 布尔类型:boolean 二. 封装:将属性私有化,不允许外部数据直接访 ...

  9. java基础知识(二)字符串处理

    字符串是程序开发中使用最为频繁,因此为了工作的高效和作为一名想进阶的程序员,了解并掌握字符串的处理显得尤为重要.java为我们提供了String.StringBuffer.StringBuilde三个 ...

随机推荐

  1. JAVA基础之訪问控制权限(封装)

    包:库单元 1.当编写一个Java源码文件时.此文件通常被称为编译单元(有时也被称为转译单元). 2.每一个编译单元都必须有一个后缀名.java,而在编译单元内则能够有一个public类,该类名称必须 ...

  2. poj3301--Texas Trip(最小正方形覆盖)

    题目链接:点击打开链接 题目大意:给出n个点的坐标.如今要求一个正方形,全然包围n个点.而且正方形面积最小,求最小的正方形面积. 表示不能理解为什么面积随着角度的变化是一个单峰的函数,等待大牛告诉一下 ...

  3. Struts2_day01--导入源文件_Struts2的执行过程_查看源代码

    导入源文件 选中按ctrl + shift + t进入 Struts2执行过程 画图分析过程 过滤器在服务器启动时创建,servlet在第一次访问时创建 查看源代码 public class Stru ...

  4. swift - storyboard(故事版)的使用

    iOS开发中,苹果公司提供了一种可视化的编程方式:即xib和storyboard,xib相对来说比较灵活,可以在纯代码的项目中使用, 也可以和storyboard配合使用,用法都差不多,下面来总结一下 ...

  5. Linux下的高级拾色器—Pick

    导读 虽然大多数设计师都在使用 Mac,但也有一少部分在使用 Windows 甚至是 Linux 系统.在 Mac 和 Windows 中都有非常丰富的拾色器工具或插件可用,反而在开源界中这类颜色选择 ...

  6. 【黑金原创教程】【TimeQuest】【第二章】TimeQuest模型角色,网表概念,时序报告

    声明:本文为黑金动力社区(http://www.heijin.org)原创教程,如需转载请注明出处,谢谢! 黑金动力社区2013年原创教程连载计划: http://www.cnblogs.com/al ...

  7. CodeForces 732C Sanatorium

    C. Sanatorium time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  8. IIS6中给Framework2,。0站点的虚拟目录(2.0版本)下发布Web API项目(4.0版本)问题处理

    Web-API项目以虚拟目录形式部署到IIS6/IIS7 若原有站点为Framework2.0版本,在此站点(或虚拟目录站点)下,新增API虚拟目录,然后选择Framework4.0版本,IIS6和I ...

  9. git学习(4)远程库和分支管理

    git学习(4)远程库和分支管理 1.1建立本地git库和远程库联系 我使用的是GitHub上的库,首先在GitHub上新建一个库,在建立与远程库的联系之前需要建立ssh key.建立ssh key可 ...

  10. xpath scrapy shell

    w from scrapy.spider import Spider from scrapy.crawler import CrawlerProcess import pymysql conn = p ...