Head First Java笔记集:数字与静态

开始用印象笔记之后,看书的效率好像低了,但是理解也更透彻了,方便回顾复习。
学完了数字与静态这一章,对在JAVA中数字的使用,静态的理解,还有print初始化一块加强了理解。
以下是笔记:

1. 在JAVA中没有东西是全局的
* Math()方法是最接近全局的方法,在这个类中所有方法都不需要实例变量值,因为这些方法都是静态

2. 静态的方法
* 静态方法代表:一种不依靠实例变量也就不需要对象的行为
*

* 以类的名称调用静态的方法,以引用变量的名称调用非静态的方法
* 抽象的类是不能被初始化的
* 用abstract这个修饰字来标记类以让它不能被创建出实例
* 也可以用私有的构造函数来限制非抽象类被初始化(Math()就是这样做的)
* 有main()的类都算有静态的方法

* 静态的方法无法调用非静态的变量
* 静态的方法也无法调用非静态的方法
* 静态变量的值对所有的实例来说都相同->被同类的所有实例,将会共享变量
* 静态变量是在类被加载时初始化的(加载时机:创建该类的实例时or使用该类的静态方法或变量时)
* 静态项目的初始化两项保证

* 静态变量会在该类的任何对象创建之前就完成初始化
* 静态变量会在该类的任何静态方法执行之前就初始化

* 静态变量也是通过类的名称来存取(不是实例的名称,因为不管创建几个实例,大家的静态变量都是一样的)
* 如果没有给静态变量赋初值,就会被设定默认值。

3. 静态的final常数
* 一个被标记为final的变量代表它一旦被初始化之后就不会改动
* e.g. public static final double PI = 3.141592653589793;
* 常数变量的名称需要全部大写
* 可以用final来防止方法的覆盖或创建子类->终结者final->final的变量代表不能改变,final的方法代表你不能覆盖该方法,final的类代表你不能继承该类
* 如果类已经是final的,再把该类下的方法标记成final就显得很多余->这个类都不能被继承了,它的方法怎么被覆盖?

4. Math的方法
* Math.random() 返回介于0.0~0.1的双精度浮点数
* Math.abs() 返回双精度浮点数类型参数的绝对值 (有覆盖的版本,即根据参数改变返回结果)
* Math.round() 根据参数是浮点型或双精度浮点数返回四舍五入之后的整型或长整型值
* Math.min() 返回两参数中较小的那一个
* Math.max() 返回两参数中交大的那一个

5. autoboxing:不必把primitive主数据类型与对象分得那么清楚
* 在5.0之前的java版本上,无法直接把primitive主数据类型放进ArrayList或HashMap中
* autoboxing功能能够自动地将primitive主数据类型转换成包装过的对象
* Exception in thread “main” java.lang.NullPointerException <-空指针异常

6. 包装类型的方法:包装也有一组实用的静态方法

* Integer.parseInt() ->取用String并返回给你primitive主数据类型值
* 也可以将数值转换成String

7. 格式化说明的格式 —–>输出时“%”的用法 %[argument number] [flags] [width] [.precision] type

* argument number: 如果要格式化的数字超过一个以上,在此处指定是哪一个
* flags: 特定类型的特定选项,例如数字要加逗号或正负号
* width: 最小的字符数,如果不足则会自动补0
* .precision: 精确度,前面有个原点
* type:一定要指定的类型标识
* e.g. format(“%,6.1f”, 42.000);
* %d -》 参数必须能够与int相容(42.45这样的不行)
* %f -》参数必须是浮点数类型
* %x -》 参数必须是byte,short,int,long,BigInteger (变为16进制整数)
* %c -> 参数同上,除去BigInteger(以ASCII码输出)

8. 操作日期

* 完整的日期与时间:%tc ->Stirng format(“%tc”, new Date()); -》Sun Nov 20:10:22 MST 2016(MST是美国时间)
* 只有时间 :%tr -> 8:13:21 PM
* 周,月,日:%tA %tB %td ->String.format(“%tA, %tB %td”,today,today,today); ->Sunday, November 28
* 上一条还可以这样做(避免了重复给参数):String.format(“%tA, % * “<” 用来告诉格式化程序重复利用之前用过的参数
* 要取得当前的日期时间就用Date,其余功能可以从Calendar上面找

9. Calendar

* Calendar是一个抽象类,你不能创建它的实例,像这样 -> Calendar cal = new Calendar();×
* 但是你可以调用它静态的方法,像这样 -> Calendar cal = Calendar.getInstance(); √
* 重要的方法
*

* add(int field,int amount) 加减时间值
* get(int field) 取出指定字段的值
* getInstance() 返回Calendar,可指定地区
* getTimeInMillis() 以毫秒返回时间
* roll(int field,boolean up) 加减时间值,不进位
* set(int field, int value) 设定指定字段的值
* set(year, month, day, hour, minute) 设定完整的时间
* setTimeInMillis(long millis) 以毫秒指定时间

* 关键字段
*

* DATE/DAY_OF_MONTH 每月的几号
* HOUR/HOUR_OF_DAY 小时
* MILLISECOND 毫秒
* MINUTE 分钟
* MONTH 月份
* YEAR 年份
* ZONE_OFFSET 时区位移

总结:

好像今天发现了二次分类下的退格,在这里发布的时候都会默认置顶?
有些不开心,然后用了b-quote标签试试看,勉强可以,但是还是觉得有些丑不适合。
下次再感受感受用什么方法突出二次分类的项。(在印象笔记上退格的距离刚刚好很好看啊QAQ

静态变量和静态方法总觉得用起来很酷,管你怎么变,我就是这样,休想动我2333
final也超酷的,被他定义过的东西,全部不许动!统统不许动!不许覆盖我!不许继承我!我是老大!
静态变量很靠谱,会在别人用它之前先把自己初始化完成了,不然系统要大乱啦!
输出的主要类型有四种,比较少用的是%x %c 一个变成16进制数,一个变成ASCLL码,帅极了,记住之后再也不怕老师给我出幺蛾子了(噫?
日期的操作也非常黑,多玩玩开心就好

——————今天的栗子没有偷懒!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据