美文网首页
coreJava_0421

coreJava_0421

作者: 手捧樱花v | 来源:发表于2020-03-19 00:18 被阅读0次
    1. 面向对象的程序是由对象组成的,每个对象(类创造的实例)包含对用户公开的特定功能(属性)和隐藏的实现部分(方法/实现方法的类)
    2. 封装/数据隐藏,将数据和行为组合在一个包中,并对对象的使用者隐藏具体的实现方式。对象的数据称为实例字段,操作数据的过程称为方法。作为一个类的实例,特定对象都有一组特定的实例字段值。这些值的集合就是这个对象的当前状态。提高重用性和可靠性,仅提供修改而不被直接修改值/实例字段
    3. 继承 所有类都扩展Object类,在扩展一个已有的类时,这个扩展后的新类具有被扩展的类的全部属性和方法,只需要在新类中提供新类的新方法和数据字段
    4. 依赖 一个类的方法使用或者操作另一个类的对象
      聚合 A类的对象包含B类的对象
    5. Math类只封装了功能,它不需要也不必隐藏数据,由于没有数据,不必考虑创建对象和初始化他们的实例字段,因为没有实例字段
    6. 构造器名称与类名相同!!!
    7. 对象与对象变量 为了将构造的对象多次使用,因此需要存放在一个对象变量中,变量必须初始化;任何对象变量的值都是对存储在另外一个地方的某个变量的引用
    Date deadline = new Date();
    

    等号右边构造了一个Date类型的对象,它的值是对新创建对象的一个引用,存储在变量deadline中
    显式将对象变量设置为null,指示这个对象变量目前没有引用任何对象

    1. 静态工厂方法调用构造器LocalDate.now(); 构造器构造new Date();
    2. 获取当前日期plus前/minus后n天的日期 %3d整型占宽长度3 不足使用空格补齐
           LocalDate date = LocalDate.now();
           int month = date.getMonthValue();
           int today = date.getDayOfMonth();
           date = date.minusDays(today-1);
           DayOfWeek weekday = date.getDayOfWeek();
           int value = weekday.getValue();
           System.out.println("Mon Tue Wed Thu Fri Sat Sun");
           for (int i =1;i<value;i++)
               System.out.print("    ");
           while(date.getMonthValue() == month){
               System.out.printf("%3d",date.getDayOfMonth());
               if(date.getDayOfMonth()==today)
                   System.out.print('*');
               else
                   System.out.print(" ");
               date=date.plusDays(1);
               if (date.getDayOfWeek().getValue()==1) System.out.println();
           }
           if (date.getDayOfWeek().getValue()!=1) System.out.println();
    
    1. private 使用get/set获取属性 实现安全校验 private不能被其他类方法读写 解封装
      为实现封装性,常将类的成员变量声明为private,再通过public的方法来对这个变量进行访问 set xxx()和get xxx()表示设置xxx和获取xxx
      Exception in thread "main" java.lang.NullPointerException 未初始化
    private String sakura;
    public String getSakura(){ return sakura;}
    
    1. 文件名必须与pubilc类的名字相匹配,一个文件只能有一个公共类,但可以有任意数目的非公共类,一个源文件有多少个class编译后就会出现多少个class文件
    2. 构造器与方法的区别:
      1)构造器是为了创造一个类的实例,方法是为了执行java代码
      2)和方法一样,构造器可以有任何访问的修饰: public, protected, private或者没有修饰,构造器不能有以下非访问性质的修饰: abstract, final, native, static, 或者 synchronized
      3)方法能返回任何类型的值或者无返回值(void),构造器没有返回值,也不需要void
      4)this的用法:在构造器中,如果要使用关键字this,那么,必须放在第一行,如果不这样,将导致一个编译错误
      5)super的用法 (暂时先放这里 后面看了再回来补充 ~)
    3. 构造器特点:(同名,非同名即为方法)
      1)构造器总是伴随new操作符的执行而调用
      2)构造器与类同名
      3)每个类可以有多个构造器
      4)构造器没有返回值 (创建类的实例,不是执行代码)
      5)构造器可以有或没有参数
    4. 变量尽量不存在构造器中
    5. this(非静态方法)表示隐式参数,区分实例域与局部变量,byPercent显式参数
    public void raiseSalary(double byPercent)
        {
            double raise = this.salary * byPercent / 100;
            this.salary += raise;
        }
    
    1. 重载和重写的区别(书中多次提到,后面回来看 ~)
    2. 获得或改变实例域的值
      1)private数据
      2)public访问器(getXX)
      3)public更改器(setXX) —— 只能通过这个方法修改值/对数据做校验
    3. JAVA中所有方法必须定义在类的内部
    4. 不要编写返回引用可变对象的访问器方法,LocalDate没有,Date有一个SetTime更改值方法:除了更改器还有别的方法修改private数据 不安全~
    5. 方法可以访问所调用对象的private数据
    6. 静态域:main都被修饰为static 每个对象对于实例域都有自己的一份拷贝 静态域唯一 静态域属于类不属于对象 没有对象没有实例域有静态域 没有static就是实例域
    7. 静态变量:本地方法可以绕过 Java 语 言的存取控制机制 公有常量(即final域)设为public安全
    8. 静态方法:没有 this的方法 除显示参数不接受隐式参数 上文的this.salary
    9. 静态成员:
      1)属于类 公有部分 不属于某一个对象
      2)非静态方法可以访问所有成员,而静态方法只能访问静态成员
      3)static关键字常和final关键字一起用来定义常量
    10. 当使用构造器时, 无法改变所构造的对象类型。 而 Factory 方法将返回一个 DecimalFormat类对象 构造器new 工厂方法ClassName class_story1 = ClassName.a()
    11. 每一个类可以有一个 main 方法。这是一个常用于对类进行单元测试的技巧 有main函数的class就可以直接Java xx
    package com.laji;
    
    /**
     * this shit is programmed for myself to learn static stuff
     *
     * @author sakura
     **/
    
    public class StaticTest {
        public static void main(String[] args) {
            EmployeeSakura[] staff = new EmployeeSakura[3];
            staff[0] = new EmployeeSakura("Tom", 7000);
            staff[1] = new EmployeeSakura("Tom2", 8000);
            staff[2] = new EmployeeSakura("Tom3", 9000);
            for (EmployeeSakura e : staff) {
                e.setId();
                System.out.println("name=" + e.getName() + ",id=" + e.getId() + ",salary=" + e.getSalary());
            }
            int n = EmployeeSakura.getNextId();
            System.out.println("next avaliable is" + n);
        }
    }
    
    class EmployeeSakura {
        private static int nextId = 1;
        private String name;
        private double salary;
        private int id;
    
        public EmployeeSakura(String n, double s) {
            name = n;
            salary = s;
            id = 0;
        }
    
        public String getName() {
            return name;
        }
    
        public double getSalary() {
            return salary;
        }
    
        public int getId() {
            return id;
        }
    
        public void setId() {
            id = nextId;
            nextId++;
        }
    
        public static int getNextId() {
            return nextId;
        }
    
        public static void main(String[] args) {
            EmployeeSakura e = new EmployeeSakura("dudu",9999);
            System.out.println(e.getSalary());
        }
    }
    
    
    

    相关文章

      网友评论

          本文标题:coreJava_0421

          本文链接:https://www.haomeiwen.com/subject/finhyhtx.html