Java基础7
2016-05-09 12:35
267 查看
1、volatile关键字
用来修饰被不同线程访问和修改的变量,系统每次使用它时直接从对应的内存中提取,而不会利用缓存(为提高程序运行效率,一般常用变量会从缓存中读取)。所有线程在任何时候所看到的变量值都是相同的。
2、基本数据类型
3、不可变类
指创建了这个类的实例就不允许修改它的值了。所有基本类型的包装类都是不可变类。Integer、Float....String类也是。
创建不可变类:
1)类中的所有成员变量被private修饰
2)类中没有写或者修改成员变量的方法,如set()。
3)确保类中的所有方法不会被子类覆盖,可通过将类定义为final
(还有其他注意事项)
4、值传递和引用传递
1)值传递
实参把值传给形参,形参只是用实参的值初始化一个临时存储单元,因此形参和实参虽有相同的值却有不同的存储单元,因此对形参的改变不会影响实参。
2)引用传递
传递的是对象(也可看作对象的地址),这时形参和实参指向同一个存储单元,对形参的修改会影响实参。
用来修饰被不同线程访问和修改的变量,系统每次使用它时直接从对应的内存中提取,而不会利用缓存(为提高程序运行效率,一般常用变量会从缓存中读取)。所有线程在任何时候所看到的变量值都是相同的。
//用来停止线程的常用方法 public class MyThread implements Runnable{ //若flag没有被声明为volatile,当run方法判断flag值时,使用的可能是缓存中的值,此时就不能及时获取其他线程对 //flag所做的操作,会导致线程不能及时停止 private volatile Boolean flag; public void stop(){ flag = false; } public void run(){ while(flag){ // } } }
2、基本数据类型
数据类型 | 字节长度 | 范围 | 默认值 | 包装类 |
int | 4 | -2^31~2^31-1 | 0 | Integer |
short | 2 | -2^15~2^15-1 | 0 | Short |
long | 8 | -2^63~2^63-1 | 0000000000000L/0l | Long |
byte | 1 | -2^7~2^7-1 | 0 | Byte |
float | 4 | 32位IEEE754单精度范围 | 0.0f/F | Float |
double | 8 | 64位IEEE754单精度范围 | 0.0 | Double |
char | 2 | Unicode 0~65535 | u0000 | Character |
boolean | 1 | true/false | false | Boolean |
指创建了这个类的实例就不允许修改它的值了。所有基本类型的包装类都是不可变类。Integer、Float....String类也是。
//不可变类,所有基本类型的包装类都是不可变类,Integer/Boolean/Float/Double/Long/Short/Character/Byte public class StringTest { public static void main(String[] args){ String s = "Hello";//声明了一个可以指向String类型对象的引用s,指向字符串常量“Hello” System.out.println(s); s = "you";//并没有改变s所指向的对象,s指向了另外一个String类型的对象,该对象的内容为"you", //原来那个字符串常量"Hello"还存在内存中,并没有被改变,但s已经不指向它了而指向"you" System.out.println(s); } }
创建不可变类:
1)类中的所有成员变量被private修饰
2)类中没有写或者修改成员变量的方法,如set()。
3)确保类中的所有方法不会被子类覆盖,可通过将类定义为final
(还有其他注意事项)
4、值传递和引用传递
1)值传递
实参把值传给形参,形参只是用实参的值初始化一个临时存储单元,因此形参和实参虽有相同的值却有不同的存储单元,因此对形参的改变不会影响实参。
2)引用传递
传递的是对象(也可看作对象的地址),这时形参和实参指向同一个存储单元,对形参的修改会影响实参。
相关文章推荐
- JAVA语言之有序矩阵查找
- eclipse 按alt+/没有提示信息
- Eclipse 学习笔记
- Java 超简单实现发送邮件(可动态控制发送人数)
- 【Leetcode】:326. Power of Three 问题 in JAVA
- java同步synchronized
- java同步synchronized
- springMVC 与 struts+hibernate+spring优缺点
- PropertyPlaceholderConfigurer扩展---spring读取properties配置文件
- SpringBoot动态创建Bean
- 【第四章】 资源 之 4.1 基础知识 ——跟我学spring3
- JAVA导出EXCEL实现
- Spring核心机制:依赖注入
- Java之Lambda表达式和Stream类简单例子
- java基本排序算法总结(一)——冒泡排序法
- Struts2与struts1与springmvc比较
- Java设计模式学习心得
- JAX-WS创建和JavaAPI发送和处理SOAP消息实例
- java instrument原理和Aattach API
- [Java视频笔记]day19