FKJAVA读书笔记--第七章--与运行环境的交互
来源:互联网 发布:cpp socket编程 编辑:程序博客网 时间:2024/05/29 21:33
1.Scanner类的使用:可以获取键盘输入,也可以读取文件内容,它是一个基于正则表达式的文本扫描器。
2.BufferedReader类的使用:与Scanner不一样的地方,它不能识别输入的基本类型。并且它只能处理字符流,所以system.in获取的字节流需要用inputStreamReader包装。
3.利用System和Runtime类可以与程序运行的平台进行交互
l System类:代表了java程序运行的平台
一、利用system.getenv()可以获取环境变量
二、System.identityHashCode()返回的是根据对象地址得到的hashcode值,这个比hashcode精确,任何两个对象的identityHashcode值都是不相等的。Java的一般object类的hashcode方法都是实现的identyHashcode方法
l Runtime类; 代表了java程序运行时的环境
一、可以通过Runtime.getRuntime获取到runtime对象,然后获取到此时系统的一些属性(内存,处理器情况等。。。)
二、可以单独启动一个进场操作系统命令:runtime.exec();
4.String类重写了hashcode类,只要两个String对象的值得字符序列相同,他们的hashcode即会一样
5.java常用类:
l Object类:一般常用的方法:equals、hascode、getClass、toString、wait、notify、notifyAll等等。。
Object还有一个用protected修饰的方法:clone();实现步骤:
1.实现Clonable接口 这个是个空接口
2.自定义类实现自己的clone方法
3.实现clone方法时,通过super.clone()来得到该对象的副本,并返回。
Java的clone的克隆只是一个浅克隆,不会对引用类型的field值所引用的对象进行克隆。
l Objects类:(java习惯为工具类加一个s 如arrays、collections)
this.user=Objects.requireNonNull(user);加入了传参时的空指针校验
l String,StringBuffer,StringBulider:
一、String 不可变类,创建到销毁都不可以被改变
1) Int compareTo方法:如果字符序列一样,返回0;否则返回第一个不相等字符差,如果刚巧较长字符串前面恰好是较短的字符串,则返回长度差。
二、StringBuffer对象表示一个字符序列可变的字符串,可以通过其append、insert、reserve。。。方法改变这个字符序列的顺序,一旦通过StringBuffer生成了理想的字符串,可以调用其toStirng方法转换成String类型。
三、StringBuilder和StringBuffer差不多,但是StringBuffer是线程安全的,而StringBuilder不是,所以StringBuilder的性能更高。因此我们在保证线程是安全的情况下,应该优先使用StringBuilder类
四、StringBuilder或者StringBuffer的capacity属性通常比length大
l Math类:
l “Java7的ThreadLocalRandom”与Radom类:
一、Random有两个构造器,一个使用默认的种子生成随机数,一个使用程序员显式的传入的值。
二、ThreadLocalRandom使用类方法current方法获取该对象。
l BigDecimal类:
通常预先要使用String的构造器。
创建BigDecimal对象时,不要直接使用double浮点数作为参数来调用bigDecimal对象构造器,否则一样有精度丢失的情况
l Date类
一、构造器:Date()、 Date(long date)
二、比较两个日期的大小compareTo 、Boolean after、boolean before
升级版的Date类:Calender类:
一、add 、get、类似于add的roll(不会影响前面的字段)、set
要注意的是set方法中的Moth字段是从0开始,即0代表1月
Set方法有延迟性。
Calendar的add和roll方法有区别:
Add修改的话,上一个字段会增大,比如月数增加,那么增加到12,年数会加1;
Roll修改的话,上一个字段是不会增加的。
l TimeZone类:抽象类,只能通过getDefualt和getTimeZone获取实例。
l Pattern 、Matcher类:
Pattern pattern=Pattern.compile("a*b");
Matcher matcher=pattern.matcher("aaaaab");
System.out.println(matcher.matches());===》true
l 国际化:Locale类、ResourceBundle类
ResourceBundle bundle=ResourceBundle.getBundle(“文件名”,locale对象);
l MessageFormat类:自动补全一些字段
Eg: String str="你好 ,{0},现在是:{1}";
System.out.println(MessageFormat.format(str, "guxuewu",new Date()));
l 另外两个Format类:DateFormat、NumberFormat
DateFormat format=DateFormat.getDateInstance(DateFormat.LONG, Locale.CHINA);
System.out.println(format.format(new Date()));
String str="2014年12月8日";
System.out.println(DateFormat.getDateInstance(DateFormat.LONG).parse(str));
l SimpleDateFormat类:
SimpleDateFormat format=new SimpleDateFormat("Gyyyy年中第D天");
System.out.println(format.format(new Date()));
6.因为String是不可变类,所以下面的代码会产生三个对象:
String str1=”sdfs”;
Str1=str1+”sfsf”;
Str1=str1+”sfsfsd”;
如果用StringBuffer或者StringBuilder就不会出现这个问题。
- FKJAVA读书笔记--第七章--与运行环境的交互
- FKJAVA读书笔记--第四章--流程控制与数组
- FKJAVA读书笔记--第十三章--MySQL数据库与JDBC编程
- FKJAVA读书笔记--第十四章--Annotation
- 与运行环境交互
- FKJAVA读书笔记--第八章--JAVA集合
- FKJAVA读书笔记--第十章--异常处理
- FKJAVA读书笔记--第九章--泛型(修改)
- FKJAVA读书笔记--第十六章--多线程(修改)
- 第7章 与运行环境交互
- APUE 第七章 进程的运行环境
- 读书笔记 第七章-进程环境
- 与运行环境交互总结
- Java与运行环境交互
- FKJAVA读书笔记--第三章--数据类型和运算符
- FKJAVA读书笔记--第五章--面向对象(上)
- FKJAVA读书笔记--第六章--面向对象(下)
- FKJAVA读书笔记--第十五章--输入/输出(修改)
- bd面试
- 循环语句
- 【Python】Python应用Redis作为缓存来提高数据存取效率
- 使用VS2010统计代码行数
- ZOJ:3633 Alice's present(离线处理)
- FKJAVA读书笔记--第七章--与运行环境的交互
- UIViewController的生命周期
- xueweird 无法打开包括文件:“extensions/ExtensionMacros.h”: No such file or directory无法打开包括文件:“extensions/Exte
- 我的java学习笔记(15)关于接口
- Hdu Problem E
- string,vector和array(C++ Primer读书笔记)
- Swift 1
- 给自己的开源库添加cocopods支持
- qt 中建立空项目时找不到头文件问题