首页 > 编程语言 >Head First Java 读书笔记

Head First Java 读书笔记

时间:2022-11-09 20:03:14浏览次数:44  
标签:Head Java 变量 读书笔记 静态 size final Math String

第10章:数字与静态性

Math 有什么特点?

在 Java 中没有东西是全局(global)的。但,Math 方法是接近全局的方法。Math不能用来创建实例变量。因为Math是用来执行数据计算的,所以没有必要创建对象来进行数学计算,创建对象是浪费内存空间的做法。Math中所有方法都静态方法。

Long a = Math.round(46.25);
int b = Math.max(2, 3);
int c = Math.abs(-500);

非静态方法与静态方法,有哪些差别?

静态方法,使用 static 关键字声明,以类的名称进行调用。

非静态方法,以实例对象进行调用,没有 static修饰。

Math类是如何阻止被实例化的?

Math类阻止被实例化,采取的策略是使用 private 修饰了其构造函数。

在静态方法中,为什么不能使用非静态的变量?为什么也不能调用非静态的方法?

静态变量有哪些特点?静态变量与非静态变量有哪些区别?

静态变量,会被同类的所有实例共享,因为它隶属于类。静态变量,在类第一次载入时初始化。静态变量,会在所有对象创建之前进行初始化,也会在任何静态方法执行之前就初始化。静态变量,只能由类来调用。

非静态变量,只被单个对象独有,它隶属于实例。非静态变量,在类实例化时进行初始化。
实例对象不会维护静态变量的拷贝,静态变量由类进行维护。非静态变量由实例对象进行维护。

class Duck {
// 非静态变量,属于对象
private int size = 0;
// 静态变量,属于类
private static int count = 0;

public Duck() {
size++;
count++;
System.out.println("size " + size);
System.out.println("count " + count);
}
public void setSize(int s) {
size = s;
}
public int getSize() {
return size;
}
}

public class TestStatic {
public static void main(String[] args) {
Duck d1 = new Duck(); // size = 1 count = 1
Duck d2 = new Duck(); // size = 1 count = 2
Duck d3 = new Duck(); // size = 1 count = 3
}
}

如何声明一个静态常量?

public static final double PI = 3.1415926;

public 表示可供各方读取。 static 表示静态。 final 表示“固定不变”。 常量的标识符,一般建议字母大写,字母之间可以用下划线连接。

深入理解 final

final 的核心意思是,它所修饰的元素不能被改变。final 不仅可以修饰变量,还可以修饰方法和类。

// 用 final 修饰的类,不能被继承
final class Foo {
// final 修饰静态变量,得到静态常量
public static final double PI = 3.1415926;
// final 修饰非静态变量,该变量将无法再被修改
final String name = "geekxia";
void changeName() {
// 修改 final变量,失败
// name = "Evatsai";
}
// final 修饰局部变量,该局部变量也将无法再被修改
void doFoo(final int x) {
// 修改局部变量,失败
// x = 100;
}
// final 修饰的方法,子类将不能覆写
final String getName() {
return name;
}
}

什么是主数据类型的包装类?

Boolean / Character / Byte / Short / Integer / Long / Float / Double

主数据类型的包装类,都放在 java.lang 中,所以无需 import 它们。当你需要以对象的方式来处理主数据类型时,你就需要用包装类把它们包装起来,Java5.0之前必须这么做。

int a = 123;
// 包装
Integer aWrap = new Integer(a);
// 解包
int b = aWrap.intValue();

如何对数字进行格式化?

// 第二个参数,以第一个参数的格式化指令进行输出

String s = String.format("%, d", 1000000000);

String m = String.format("I have %,.2f bugs to fix.", 489369.123456);

如何对日期进行格式化?

String d = String.format("%tB", new Date());

使用 Calendar 抽象类操作日期

// 获取日历的实例对象
Calendar cal = Calendar.getInstance();
cal.set(2014, 1, 7, 15, 40);

long day1 = cal.getTimeInMillis();
day1 += 1000*60*60;

cal.setTimeInMillis(day1);
cal.add(cal.DATE, 35);

标签:Head,Java,变量,读书笔记,静态,size,final,Math,String
From: https://www.cnblogs.com/LvJinshuai/p/16874974.html

相关文章

  • java的反射
    packagecom.tedu.day16;importcom.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;importjava.lang.reflect.Constructor;importjava.lang.reflect.Field......
  • SpringBoot 01: JavaConfig + @ImportResource + @PropertyResource
    springboot的前置知识:通过注解创建对象和读取配置文件1.JavaConfig设计思想使用java类作为xml配置文件的替代,是配置spring容器的纯java的方式可以创建java对象并把......
  • javascript初识以及总结
    今天主要学习了js的概述,书写的三种位置(和css一样内嵌外联和内联三种)以及变量的定义,变量的定义用的是var来定义的并且学了五种数据类型 有number数值型strin......
  • HeadFirst设计模式-装饰者模式
     C++代码#pragmaonce#include<string>usingstd::string;classBeverage{public:Beverage(){}virtual~Beverage(){}......
  • Java并发编程一ThreadLocal初使用
    推荐:​​Java并发编程汇总​​Java并发编程一ThreadLocal初使用任务为了方便使用以及展现​​ThreadLocal​​​的优点,这里首先给出一个任务,然后不断地去加大任务难度,再根据......
  • Java并发编程一引用类型、升级类型原子类初使用加源码分析
    推荐:​​Java并发编程汇总​​Java并发编程一引用类型、升级类型原子类初使用加源码分析首先我们来看一看有哪些原子类。现在我们来看看该如何去使用这些引用类型、升级类......
  • Java并发编程一ReentrantReadWriteLock初使用
    推荐:​​Java并发编程汇总​​Java并发编程一ReentrantReadWriteLock初使用​​ReentrantReadWriteLock​​是一种读写锁,从类名也可以看出来。​​ReentrantReadWriteLock​......
  • Java中String被称为不可变字符串的原因
    很多东西,看似可变,实际上不过是是新桃换旧符罢了。 代码:/***String之所以被称为不可变字符串*/staticvoidtestString(){Stringstr="i......
  • mac下java和mvn的环境配置
    原文:https://blog.csdn.net/w605283073/article/details/111770386   https://www.pudn.com/news/62f8c6905425817ffc462029.htmlmvn打包报错:Nocompilerisprov......
  • JAVA遍历Map所有元素
    //JDK1.5Mapmap=newHashMap();for(Objectobj:map.keySet()){Objectkey=obj;Objectvalue=map.get(obj);}123456//JDK1.4......