`
ghost_away
  • 浏览: 17165 次
文章分类
社区版块
存档分类
最新评论

java参数传递问题

 
阅读更多
地址http://bbs.csdn.net/topics/390356411?page=1#post-393564067

public static void ch1(int n){
n=100;
}
public static void ch2(int n){
n=200;
}
public static void ch3(int n){
n=300;
}
public static void main(String args[]) {
int n=10;
                //new Hay().ch1(n);//1.如果把static删掉,输出100
ch1(n);//2.这样子输出10,为什么
ch2(n);
ch3(n);
System.out.println(n);
}
结果:main方法注释中的2种问题,我搞不懂啊

1.楼主要知道,ch1方法里的n,是属于ch1方法的局部变量,作用范围只是在ch1中而已,它怎么变化,都不会影响到main方法里的n。两个n是两回事。

2.//new Hay().ch1(n);//1.如果把static删掉,输出100Hay是类名?这句,输出是10
ch1(n);//2.这样子输出10,为什么
解释,n是简单类型,在这几个方法中都是值传递,传递中只是把n所指向的地址复制了一份给方法中的变量n,修改的是复制的地址,而不是main方法中n指向的地址

3.http://blog.csdn.net/nmyangym/article/details/8531053



转http://www.blogjava.net/Java-liyadong/archive/2011/10/09/360323.html

Java变量和作用域
1.变更的概念
    变量就是系统为程序分配的一块内存单元,用来存储各种类型的数据。根据所存储的数据类型的不同,有各种不同类型的变量。变量名代表这块内存中的数据 。
2.java的变量类型
java编程基础-变量及变量的作用域
3.变量字节大小及有效取值范围
byte占用一个字节,数字大小为-27—27-1
short占用两个字节,数字大小为-215—215-1
int占用四个字节,数字大小为-231—231-1
long占用八个字节,数字大小为-263—263-1
float占用四个字节,数字大小为1.4E-45~3.4E+38 , -1.4E-45~-3.4E+38 。用二进制的指数形式表示一个浮点数的格式,如:101*22  , 101*2-3
double占用八个字节,数字大小为4.9E-324~1.7E+308, -4.9E-324~-1.7E+308 。
char占两个字节,数字大小为0—216-1,是unicode编码。字符的本来面目,我们为什么可以直接将一个数字赋给字符变量。
Boolean占一个字节,其取值只有两个,true和false。
4.基本数据类型之间的转换

自动类型转换(也叫隐式类型转换)

实现这种转换要满足两个条件,第一是两种类型彼此兼容,第二是目标类型的取值范围大于源类型。如,当byte型向int型转换时,由于int型取值范围大于byte型,就会发生自动转换。所有的数字类型,包括整型和浮点型彼此都可以进行这样的转换。如:

byte b=3;

int x=b;
强制类型转换(也叫显式类型转换)

当两种类型彼此不兼容,或目标类型取值范围小于源类型时,自动转换无法进行,这时就需要进行强制类型转换。强制类型转换的通用格式如下:

目标类型 变量=(目标类型)值,如:

byte a;

int b;

a=(byte)b;
表达式的数据类型自动提升
所有的byte型、short型和char的值将被提升到int型。
如果一个操作数是long型,计算结果就是long型;
如果一个操作数是float型,计算结果就是float型;
如果一个操作数是double型,计算结果就是double型。

5.变量的作用域

    变量要先定义,后使用,但也不是在变量定义后的语句一直都能使用前面定义的变量。我们可以用大括号将多个语句包起来形成一个复合语句,变量只能在定义它的复合语句中使用。
public class TestScope
{
    public static void main(String[] args)
   {
        int x = 12;         
             {
                   int q = 96;  // x和q都可用
                   int x = 3;//错误的定义,Java中不允许有这种嵌套定义
                   System.out.println("x is "+x);
                   System.out.println("q is "+q);
             }
            q = x;   
            System.out.println("x is "+x);    
   }


6.局部变量的初始化

    在一个函数或函数里而把代码块中定义的变量称为局部变量,局部变量在函数或代码块被执行时创建,在函数或代码块结束时被销毁。局部变量在进行取值操作前必须被初始化或进行过赋值操作,否则会出现编译错误!
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics