📄 day16.txt
字号:
CoreJava(day16) -- 李艳
国际化:
即如何让全世界的人都能用一盘棋
1、java.util.Locale类:(课堂代码:TestLocale.java)
代表国家、地区、语言
Locale lc=Locale.CHINA; 推荐使用这种方式获得一个Locale对象
2、java.text.* 格式类
数字:java.text.NumberFormat (课堂代码:TestNumber.java)
货币:(课堂代码:TestCur.java)
public static NumberFormat getCurrencyInstance(Locale inLocale)返回指定语言环境的货币格式。
日期: 关于Date的类有很多
Date + Calendar = 日期
Date和Calendar是一个时间点,参照美国海军总局,以毫秒为单位,Calendar支持年月日
java.util.Date :(课堂代码:TestDate.java)
在类 Date 所有可以接受或返回年、月、日期、小时、分钟和秒值的方法中,将使用下面的表示形式:
年份 y 由整数 y - 1900 表示。
月份由从 0 至 11 的整数表示;0 是一月、1 是二月等等;因此 11 是十二月。
日期(一月中的某天)按通常方式由整数 1 至 31 表示。
小时由从 0 至 23 的整数表示。因此,从午夜到 1 a.m. 的时间是 0 点,从中午到 1 p.m. 的时间是 12 点。
分钟按通常方式由 0 至 59 的整数表示。
秒由 0 至 61 的整数表示;值 60 和 61 只对闰秒发生,尽管那样,也只用在实际正确跟踪闰秒的 Java 实现中。
于按当前引入闰秒的方式,两个闰秒在同一分钟内发生是极不可能的,但此规范遵循 ISO C 的日期和时间约定。
public Date(): 返回相对1970年1月1日0时0分0秒的当前时间
new Date():返回当前时间。
public long getTime(): 取时间差,自 1970 年 1 月 1 日 00:00:00 GMT 以来此日期表示的毫秒数。
java.util.Calendar:
new Calendar()--->getTime()---->返回指定日期
java.util.GregorianCalendar 是java.util.Calendar的子类
月份是从0开始的,会顺延的。
java.text.DateFormat
java.text.SimpleDateFormat : (课堂代码:TestDateFormat.java)
y--->年,M--->月,d--->日,H----->小时(24小时制),h---->(12小时制),S----->毫秒数 s----->分钟内的秒数
3、java.util.ResourceBundle:(课堂代码:MyResource.java,MyResource_zh_CN.java,TestNotePad.java)
1、先写各个语言对象文字类,extends ListResoureBundle--->重写getContexts---->返回对象数组(二维:key--value)
2、在程序中按照Locale(本地)ResourceBundle的Name(String)来选择对应的资源,调用getString/getObject取得value
所有语言文字(不可能)
默认(default)---->不带后缀
中文---->默认名+_zh+_CN ,zh是语言,CN是国家
java.util.ListResourceBundle
若都是字符文件可以使用属性文件
java 5.0的新特性:
JAVA的发展史:
1.0 JAVA产生(Bug多)
1.2 成功
1.3 区别不大
1.4 nio--->无阻塞、反射、断言
5.0 Sun--->历经九年--->又名Tiger
1、自动封箱、自动解箱
2、静态导入
3、for--each 循环
4、枚举(5.0的关键字enum,相当于interface,class)
5、泛型(重点)
6、自增参数(...) 自增数组+自增参数(0--n)
7、元数据(注释) EJB 3.0中使用,项目中推广度一般
8、Scanner (格式化IO)
一、自动封箱、自动解箱 (课堂代码:AutoBox.java)
简单类型---->封装类
自动装箱时,小于127的数字==是成立的。
null无法自动解箱,null与0是两个概念
Long l2=23;先装箱,后赋值,Long不能是Integer
long l3=new Integer(23);先解箱,后赋值
二、for-each循环 (课堂代码:AutoBox.java)
优点:(1)简单(2)只读时首选(3)方式统一(可以处理集合,数组)
缺点:(1)不能同时操作两个或者以上的集合
(2)不支持修改、删除
不能在循环内构造Iterator,否则死循环:(课堂代码:TestIterator.java)
三、可变参数 (课堂代码:TestV.java)
用于取代数组,形式为:类型...
按数组处理,允许传递非数组的值(0--n个,中间用逗号分隔)
一个方法中,可变参数只允许出现一次(0--1),若出现则必须出现在最后一个参数的位置(位置固定在最后)
四、静态导入 (课堂代码:TestStatic.java)
(1)用于导入类中的静态属性和静态方法。
(2)格式:import static 包名.类名.属性名/方法名, 也可以用*代表所有的静态属性和静态方法,非静态的不行
(3)静态导入时,不允许导入同名的方法或属性。(不可重复)
(4)使用时可省略 类名. ,就像本类方法一样调用
不建议使用,使代码的可读性降低
五、格式化IO (课堂代码:TestScanner.java)
java.util.Scanner
六、枚举(enum) (课堂代码:AllColor.java,TestEnum.java)
列表、清单,可以用class/interface替代,但一般不替代,是一个特殊类。
(1)显示一些同类型的清单(例:Color)
(2)构造器可以有,但不能是public的。
(3)有私有的默认无参构造器,显示定义后会消失(和类一样)。
(4)属性、方法和类一样
(5)枚举是final的(对于外部来说无法继承),但是在枚举的内部可以去实现(Color)。
在enum中可以有抽象方法,但在清单中所有类都必须实现此抽象方法。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -