批判性思维的本质在于学会提问,且学会提问是更有效的学习方法,养成提问的习惯,时刻保持好奇心,以理性的心态分析世界。
本笔记主要是作为本人读书过程中的一些记录,如有缺漏,请说明补充! 推荐入门书籍:
- Java核心技术卷一,二
- On Java8
- Java实战
对象的创建
问:如何开始第一个程序?
//访问修饰符 + class + 类名 = 类
public class HelloWorld {
//访问修饰符 + 变量类型 + 变量名 = 变量
private String name;
//访问修饰符 + static + 变量类型 + 变量名 = 静态变量
public static String value = "1";
//访问修饰符 + static final + 变量类型 + 变量名 = 静态常量
public static final int NUM = 18;
//访问修饰符 + final + 变量类型 + 变量名 = 常量
public final int NUM = 18;
//访问修饰符 + 类名() = 无参构造
public HelloWorld() {
}
//访问修饰符 + 类名() + 参数 = 含参构造
public HelloWorld(String name) {
this.name = name;
}
//访问修饰符 + 返回参数类型 + 方法名 = 方法
public String getName() {
return name;
}
//方法
public void setName(String name) {
this.name = name;
}
//静态方法
public static String sayHello(){
System.out.println("Hello");
}
static{
name = "静态代码构造块"
}
{
System.out.println("代码构造块");
}
//静态方法
public static void main(String[] args) {
//创建对象
HelloWorld helloWorld = new HelloWorld();
helloWorld.setName("HelloWorld");
System.out.println(helloWorld.getName());
System.out.println(HelloWorld.NUM);
System.out.println(HelloWorld.value);
}
}
复制代码
- 使用class声明了一个HelloWorld类
- 定义了name,value变量,NUM常量
- 定义了无参构造,含参构造
- 定义了针对name变量的取值,设值得方法.
- 定义了main方法作为程序执行入口
问: 频繁出现的访问修饰符用处是什么?
访问修饰符主要是用来控制访问权限,隐藏内部实现细节,避免因为直接访问或修改造成程序崩溃的问题.
问: static关键字有什么用处?
- static修饰的成员变量和成员方法独立于该类的任何对象,被类的所有实例共享。
- 只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们,无需创建对象
问: fianl关键字有什么用处?
- 被final修饰的类不可以被继承
- 被final修饰的方法不可以被重写
- 被final修饰的变量不可以被改变,实际上是指引用不可变,引用指向的内容是可以改变的.
问: 类中的构造函数与构造代码块有啥区别?
- 构造函数
1.对象一建立,就会调用与之相应的构造函数,也就是说,不建立对象,构造函数时不会运行的。
2.构造函数的作用是用于给对象进行初始化。
3.一个对象建立,构造函数只运行一次,而一般方法可以被该对象调用多次。
复制代码
- 构造代码块
1.构造代码块的作用是给对象进行初始化。
2.对象一建立就运行构造代码块了,而且优先于构造函数执行。这里要强调一下,有对象建立,才会运行构造代码块,
类不能调用构造代码块的,而且构造代码块与构造函数的执行顺序是前者先于后者执行。
3.构造代码块与构造函数的区别是:构造代码块是给所有对象进行统一初始化,而构造函数是给对应的 对象初始化,
因为构造函数是可以多个的,运行哪个构造函数就会建立什么样的对象,但无论建立哪个对象,都会先执行相同的构
造代码块。也就是说,构造代码块中定义的是不同对象共性的初始化内容。
复制代码
- 静态代码块
1.它是随着类的加载而执行,只执行一次,并优先于主函数。具体说,静态代码块是由类调用的。类调用时,先执行静
态代码块,然后才执行主函数的。
2.静态代码块其实就是给类初始化的,而构造代码块是给对象初始化的。
3.静态代码块中的变量是局部变量,与普通函数中的局部变量性质没有区别。
4.一个类中可以有多个静态代码块
复制代码
- 执行顺序
1.执行父类的静态代码块,并初始化父类静态成员变量
2.执行子类的静态代码块,并初始化子类静态成员变量
3.执行父类的构造代码块,执行父类的构造函数,并初始化父类普通成员变量
4.执行子类的构造代码块, 执行子类的构造函数,并初始化子类普通成员变量
复制代码
基础常问难点汇总
1. Java方法中的参数传递是值传递还是引用传递?
Java核心技术卷一4.5章节:
- 一个方法不能修改一个基本数据类型的参数(即数值型或布尔型)。
- 一个方法可以改变一个对象参数的状态。
- 一个方法不能让对象参数引用一个新的对象。
2. 一个类的设计技巧有哪些?
Java核心技术卷一4.10章节:
- 一定要保证数据私有
- 一定要对数据初始化
- 不要在类中使用过多的基本类型
- 不是所有的域都需要独立的域访问器和域更改器
- 将职责过多的类进行分解
- 类名和方法名要能够体现它们的职责
- 优先使用不可变的类
3. 方法中的重载与重写有什么区别?
- 重载就是同样的一个方法能够根据输入数据的不同,做出不同的处理
- 重写就是当子类继承自父类的相同方法,输入数据一样,但要做出有别于父类的响应时,你就要覆盖父类方法
4. Java中的this关键字与super关键字有什么用处?
- this代表着当前对象本身引用,super代表着父类对象引用
- 形参与成员名字重名,用this来区分.子类中的成员变量或方法与父类中的成员变量或方法同名时,用super区分.
- super调用父类中的某一个构造函数(应该为构造函数中的第一条语句)。this:调用本类中另一种形式的构造函数(应该为构造函数中的第一条语句)。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END