发表于: 2020-11-27 22:00:05
3 1309
今天完成的事情:
工厂方法,main方法,方法参数
import java.text.NumberFormat;
/**
* 4.4 静态域和静态方法
*
* 4.4.4 工厂方法
* 为什么不用构造器完成这些工作?
* 1.构造器和类同名,而这两个方法需要区别开来。 那直接设置成方法不就行了吗
* 2.使用构造器无法改变构造的对象类型
*
* 4.4.5 main方法
* 1.每一个类可以有一个main方法
* 2.Student的main方法永远不会执行, 为啥不会执行?
*
* 4.5 方法参数 (没仔细看)
* 1.一个方法不能改变基本数据类型的参数(数值型和布尔型)
* 2.一个方法可以改变一个对象参数的状态。
* 3.一个方法不能让对象参数引用一个新的对象。 这个没这么看懂
*/
public class StaticDemo {
public static void main(String[] args) {
// 4.4.1 静态域
Person ming = new Person("Xiao Ming", 12);
Person hong = new Person("Xiao Hong", 15);
ming.number = 88;
System.out.println(hong.number);
hong.number = 99;
System.out.println(ming.number);//99
System.out.println(hong.number);//99
Person.setNumber(59);
System.out.println(Person.number);//59
//工厂方法,number format(数字格式)类
NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance();
NumberFormat percentFormatter = NumberFormat.getPercentInstance();
double x = 0.1;
System.out.println(currencyFormatter.format(x));// 货币格式
System.out.println(percentFormatter.format(x));// 百分比格式
}
}
class Person {
public String name;
public int age;
public static int number;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
//静态方法
public static void setNumber(int value) {
number = value;
}
}
对象构造
/**
* 4.6 对象构造
* 多种构造器的方式?什么是构造器?
*
* 4.6.1 重载
* 1.重载:如果多个方法,有相同的名字,不同的参数。这就是方法的重载
*
* 4.6.2 默认域初始化
*
* 4.6.3 无参数的构造器
* 1.当没有提供构造器时,系统会默认提供一个无参的构造器。
* 2.有构造器时,系统不会提供无参的构造器。
* 3.没有无参的构造器时,构造对象时,没有提供参数就会报错。
*
* 4.6.4 显示域初始化
* 1.跳过
*
* 4.6.5 参数名
* 1.构造器的参数名可以设置成 aName, aScore
* 2.最好还是使用this关键字,this关键字的作用是将局部变量和当前实例变量区别开来
*
* 4.6.6 调用另一个构造器
* 1.跳过
*
* 4.6.7 初始化块
* 1.初始化类的属性,除了在构造器中设置值和在声明中赋值。还可以在块中进行初始化。
*
* 4.6.8 对象析构与finalize方法(跳过)
* 1.垃圾清理
*
*/
public class ObjectConstructionTest {
public static void main(String[] args) {
Hello ming = new Hello();
ming.hello("小明");
}
static class Hello{
// private String name;
// private int age;
//
// public Hello(String name, int age){
// this.name = name;
// this.age = age;
// }
//方法名相同,各自的参数不同,这就叫做方法重载
public void hello() {
System.out.println("Hello, world!");
}
public void hello(String name) {
int n1 = name.indexOf(12);
int n2 =name.indexOf(12);
System.out.println(n1 + " " +n2);
System.out.println("Hello, " + name + "!");
System.out.println("Hello, " + name + "!");
}
public void hello(String name, int age) {
if (age < 18) {
System.out.println("Hi, " + name + "!");
} else {
System.out.println("Hello, " + name + "!");
}
}
}
}
包
/**
* 4.7 包
* 1.使用包的主要原因是确保类名的唯一性。
* 2.所有包都处于Java和Javax包层次中
*
* 4.7.1 类的导入
* 1.一个类可以使用它所属包中的所有类,以及其他包中的公共类。例子:之前spring+mybatis中基本所有类都使用Student类。
*
* 4.7.2 静态导入
* 1.导入静态方法和静态域的功能。
*
* 4.7.3 将类放入包中
* 1.想将一个类放入包中,就必须将包的名字放在源文件的开头。spring+mybatis基本都碰到过。
*
* 4.7.4 包的作用域
* 1.标记public的部分可以被任意类使用。
* 2.标记private的部分只能被定义它们的类使用。
* 3.没标记public和private,这个部分(类,方法,变量)可以被同一个包中的所有方法访问。
*
*
* 4.8 类路径
* 1.JVM通过环境变量classpath决定搜索class的路径和顺序;
* 2.不推荐设置系统环境变量classpath,始终建议通过-cp命令传入;
* 3.jar包相当于目录,可以包含很多.class文件,方便下载和使用;
* 4.MANIFEST.MF文件可以提供jar包的信息,如Main-Class,这样可以直接运行jar包。
*
* 4.9 文档注释
* 跳过
*
* 4.10 类设计技巧
* 1.一定要保证数据私有。
* 为了保证数据的私有性,不破坏封装性
*
* 2.一定要对数据初始化。
* 要么直接设置默认值,要么在所有构造器中设置默认值
*
* 3.不要在类中使用过多的基本类型。
* 没想到例子
*
* 4.不是所有域都要独立的域访问器和更改器。
* 比如一个人的入学日,一个人身份证号码
*
* 5.将职责过多的类进行分解。
* 没想到例子
*
* 6.类名和方法名要能够体现它们的职责
* 这个就是命名规范了吧
*
*
*/
public class PackageTest {
}
明天计划的事情:
完成 第五章继承和第六章接口
遇到的问题:
以上
收获:
目前:Java基础第五章学习
预计完成时间:11.29
评论