值传递和引用传递
来源:互联网 发布:sql双机热备 编辑:程序博客网 时间:2024/05/15 11:09
(1)
class Value{
public int i = 15;
}
public class Test1 {
public static void main(String[] args) { Test1 test1 = new Test1(); test1.first(); }void first(){ int i = 5; Value v = new Value(); v.i = 25; second(v ,i); System.out.println(v.i);}void second(Value v, int i) //注意理解此处的v 是另一个引用,和first 函数中的,v,不一样,他们都在栈上存放,只是指向同一个在堆上内存的内存块。{ i = 0; v.i = 20; //注意:此处的v 是改变了first中的v的值 Value value = new Value(); //此处是重新申请的一块内存。 v = value; System.out.print(v.i + " "+ i + " ");}
}
/*
* 主要考察的是值传递和引用传递
* java 中的原始数据类型都是值传递,传递的是原始值的一个副本, 形参的改变不会影响实参的值,引用传递传递的是引用的对象的数据, 一般包括String, … 形参与实参指向的是同一块内存的地址,因而形参的变化,会影响实参是值.
(2)
public class Test2 {
public static void main(String[] args) { boolean a = true == true? false:true; System.out.println(a); boolean b = true ? false: true == true ? false:true; System.out.println(b);}
}
*注: 此处的考点: b = (true ? false: true == true ? false : true);
// == 的优先级强于 三目运算符,此时先判断: true == true 此时返回 false
// b = (true ? false : true? false: true)
// b = (true ? false :false)
// b = false ;
//也可理解为直接执行了前面的 b = false; 因为第一个问号前面是true 所以直接 b = false;
(3)
package fouthDay;
public class Test3 {
public static Test3 t1 = new Test3(); //1public static Test3 t2 = new Test3();{ System.out.println("构造块");}static { System.out.println("静态代码块");}public Test3() { System.out.println("构造方法");}public static void main(String[] args) { Test3 test3 = new Test3();}
}
/**
* 执行顺序的优先级:静态 –> main() –> 构造块 –> 构造方法
* 静态块: 用static 声明 , JVM加载时,只执行一次;
* 构造块: 类中用{} 定义,每次创建你对象的时候,都会执行;
*
* 执行:
* 1 静态块按照声明顺序执行,所以执行的时候,先执行1 ,该语句创建对象,会调用构造块。
* 2 然后再执行第二个static 的声明, 此时又创建对象,又会调用构造块。
* 3 然后执行第三个 static 静态代码块;
* 4 然后再执行main()函数的代码块:Test3 test3 = new Test3();执行构造块,再执行默认的构造函数;
* 此处没有效果;
结果: 构造块 构造块 静态代码块 构造块
如果加上构造方法,此时的结果是:
构造块构造方法构造块构造方法静态代码块构造块构造方法
(4)
/*
- 1 Java.Thread 的方法resume() 负责重新开始被以下哪个方法中断的线程的执行(D)
- A stop
- B sleep
- C wait
- D suspend
-
- 注解: suspend() 和 resume()方法:两个方法配套使用, suspend()使线程进入阻塞状态, 并且不会自动回复, 必须使用对应的resume()被调用,才能使线程重新进入可执行状态;
wait()与notify() 一起使用;
- 2 下列描述错误的是(BD)
- A 类只能继承一个父类,但是可以实现多个接口;
- B 抽象类自身可以定义成员 而接口不可以;
- C 抽象类和接口都不能被实例化;
- D 一个类以有多个基类和多个接口;
-
- 注解: A Java 为单继承 ,多实现, 可以实现多个接口;
- B 接口由全局常量和公共方法组成,即使不写public funal 和 public abstract 也会默认是全局常量和公共方法;
- 抽象类: 和一般类没有什么区别,唯一的区别在于只要有出现抽象方法的类,就必须声明为抽象类;
- C 抽象类和接口不能被直接实例化,(直接实例化的含义是:使用关键字:new 操作),可以对实现接口的类,进行实例化接口,也可以 对继承了抽象类的子类进行实例化抽象类。
- D 同A。。。
*
- 值传递和引用传递
- 值传递和引用传递
- 值传递和引用传递
- 值传递和引用传递
- 引用传递和值传递
- 值传递和引用传递
- 值传递和引用传递
- 值传递和引用传递
- 值传递和引用传递
- 值传递和引用传递
- 值传递和引用传递
- 值传递和引用传递
- 值传递和引用传递
- 值传递和引用传递
- 值传递和引用传递
- 值传递和引用传递
- 值传递和引用传递
- 引用传递和值传递
- Shader学习笔记3
- 直接插入排序
- IMYWebView 无缝切换 UIWebView 为 WKWebView
- 摆花
- Android开发学习之路--基于vitamio的视频播放器(一)
- 值传递和引用传递
- install alilang
- iOS 多线程(一)多线程基础
- CUDA学习--内存处理之共享内存(3)
- 2016 ACM-CCPC长春站比赛总结
- Springmvc接收前台字符串类型日期格式转换
- Android网络框架-Volley(三) 加载图片
- C#界面数据存储到制定TXT文件
- codeforces500b New Year Permutation 【floyd】