zoukankan      html  css  js  c++  java
  • java 基础知识(程序结果题)

    try {
    			System.out.println("hello");
    			System.exit(0);
    		} finally {
    			System.out.println("good bye");
    		}
    /*
    hello
    */
    
    try {
    			int r = 1 / i;
    		} catch (Exception e) {
    			e.printStackTrace();
    			return true;
    		} finally {
    			return false;
    		}
    /*
    false
    */
    

    1.import java.awt.Point;
    class Assign
    {
    public static void main(String args[])
    {
    int a = 1;
    int b = 2;
    Point x = new Point(0,0);
    Point y = new Point(1,1); //1
    System.out.println(“a is ” + a);
    System.out.println(“b is ” + b);
    System.out.println(“x is ” + x);
    System.out.println(“y is ” + y);
    System.out.println(“Performing assignment and ” +
    “setLocation…”);
    a = b;
    a++;
    x = y; //2
    x.setLocation(5,5); //3

    System.out.println(“a is “+a);
    System.out.println(“b is “+b);
    System.out.println(“x is “+x);
    System.out.println(“y is “+y);
    }
    }
    这段代码生成以下输出结果?
    a is 1
    b is 2
    x is java.awt.Point[x=0,y=0]
    y is java.aet.point[x=1,y=1]
    Performing assignment and setLocation…
    a is 3
    b is 2
    x is java.awt.point[x=5,y=5]
    y is java.aet.point[x=5,y=5]
    解析网址:http://zhidao.baidu.com/question/106550817.html

    解析:

    当是基本数据类型改变时,不改变原有的数据,若是改变的是对象类型时,则会改变。

    对于,这里的a和b,由于是基本数据类型,所以当b赋给a时,只是将b的值给了a,a自己的值不变,当a或b改变时,a或b的值是不变的哦。

    对于这里的x和y,由于是对象类型,所以当y赋给x时,(x,y只是相应对象的引用),所以只是将x变成了y所指的对象的引用,此时x和y都是对象A的引用,所以当改变x或y时,x和y都会变,他们是一样的。

    class Main {
    	public static void main(String args[]) {
    		int a = 1;
    		int b = 2;
    		String stra = "stra";
    		String strb = "strb";
    		A aa = new A();
    		A aaa = new A();
    		aa.a = 11;
    		aaa.a = 111;
    		System.out.println("a=" + a);
    		System.out.println("b=" + b);
    		System.out.println("Aaa=" + aa.a);
    		System.out.println("Aaaa=" + aaa.a);
    		System.out.println("stra=" + stra);
    		System.out.println("strb=" + strb);
    		a = b;
    		a++;
    		aaa = aa;
    		aa.a++;
    		stra = strb;
    		stra = "buhao";
    		System.out.println("a=" + a);
    		System.out.println("b=" + b);
    		System.out.println("Aaa=" + aa.a);
    		System.out.println("Aaaa=" + aaa.a);
    		System.out.println("stra=" + stra);
    		System.out.println("strb=" + strb);
    	}
    }
    
    class A {
    	int a;
    }
    /*
    结果为:
    a=1
    b=2
    Aaa=11
    Aaaa=111
    stra=stra
    strb=strb
    a=3
    b=2
    Aaa=12
    Aaaa=12
    stra=buhao
    strb=strb
    */
    

    2.Java中的原生数据类型和引用类型的参数传递:

    class Point {
    	private int x;
    	private int y;
    
    	public Point(int x, int y) {
    		this.x = x;
    		this.y = y;
    	}
    
    	public int getX() {
    		return x;
    	}
    
    	public void setX(int x) {
    		this.x = x;
    	}
    
    	public int getY() {
    		return y;
    	}
    
    	public void setY(int y) {
    		this.y = y;
    	}
    }
    
    public class Main {
    	public void changeInt(int a) {
    		a = 3;
    	}
    
    	public void changePoint(Point point) {
    		point.setX(5);
    		point.setY(6);
    	}
    
    	public void changeString(String str) {
    		str = "abc";
    		System.out.println(str);
    	}
    
    	public static void main(String[] args) {
    		int a = 1;// 语句(1)
    		Main pt = new Main();// 语句(2)
    		pt.changeInt(a);// 语句(3)
    		System.out.println(a);// 语句(4) 1
    		Point point = new Point(1, 2);// 语句(5)
    		pt.changePoint(point);// 语句(6)
    		System.out.println(point.getX());// 语句(7) 5
    		System.out.println(point.getY());// 语句(8) 6
    		String str = "xyz";// 语句(9)
    		pt.changeString(str);// 语句(10)abc
    		System.out.println(str);// 语句(11)xyz
    	}
    }
    /*
    运行结果:
    1
    5
    6
    abc
    xyz
    */
    
    

    问题1:当执行完语句(4)后,打印的结果是什么?为什么?
    1 对于原生数据类型来说,它仅仅是把 main方法里面的a的值传过去,传值完后,两者之间没有任何的关系,

    问题2:当执行完语句(7)(8)后,打印的结果是什么?为什么?
    5 6 传的是引用,即是对象的内存地址
    问题3:当执行完语句(11)后,打印的结果是什么?为什么?
    xyz
    解析网址:http://leeldy.blog.163.com/blog/static/1398530620091279551463/
    总结: 在java里面,对方法的参数传递,不管是原生数据类型还是引用类型,一律是传值:pass by value。对原生数据类型来说,传递的值就是它被赋予的那个值,比如说 int a = 3 就把3这个值传到方法里面去;引用类型来说,引用本身是一个地址,是一个int类型的内存地址值,所以说它把这个值传递到方法里面去传递的也是值。

  • 相关阅读:
    mvc:三
    mvc:二
    Linq分组,linq方法分组
    Linq 中按照多个值进行分组(GroupBy)
    Photoshop 字体
    报表Reporting S而vice是 错误的解决
    1*书籍装帧
    photoshop 魔术橡皮擦
    Photoshop 钢笔 双窗口显示
    数字格式化
  • 原文地址:https://www.cnblogs.com/xiaoxian1369/p/2225792.html
Copyright © 2011-2022 走看看