java学习打卡(23.3.22)(自用)

书籍:《Java核心技术卷I 基础知识》

内容:第四章4.3-4.5 

主要内容:使用和自定义类,静态域与静态方法,方法参数

笔记:(连着昨天第四章4.1-4.2部分)

import java.io.*; // 使用Console类
import java.math.BigInteger;
import java.nio.charset.StandardCharsets;
import java.nio.file.*; //使用Paths
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.util.*; // Scanner类

import static java.lang.Math.*;

public class C4 {
    public static void main(String[] args) {

        //Date类
        new Date();//构造器名字与类名相同,在构造器前加new字符.初始化了一个新对象,此对象被胡世华为当前日期时间
        System.out.println(new Date());//将此对象传递给一个方法
        String s = new Date().toString();//toString 方法,返回字符串描述
        Date birthday = new Date();//为了构造的对象能多次使用,存放在一个变量内
        System.out.println(s);
        /*
         * 对象变量不是对象,也没有引用变量,不能将任何类的方法应用于其上
         * 一定要认识到:一个对象变量并没有实际包含一个对象,而仅仅引用一个对象.
         *  */
        //Eg .
        Date deadline = new Date(); //表达式  new Date() 构造了一个Date类型的对象,并且它的值是对新创建对象的引用.这个引用存储在变量 deadline中。


        //LocalDate类
        LocalDate.now();//使用静态工厂方法代表调用构造器.
        LocalDate newYearEve = LocalDate.of(1999, 12, 31);
        int y = newYearEve.getYear();
        int m = newYearEve.getMonthValue();
        int d = newYearEve.getDayOfMonth();
        System.out.println("NewYearEve:" + y + "." + m + "." + d);
        LocalDate _1000D_later = newYearEve.plusDays(1000);
        y = _1000D_later.getYear();
        m = _1000D_later.getMonthValue();
        d = _1000D_later.getDayOfMonth();
        System.out.println("_1000D_later:" + y + "." + m + "." + d);


        {//编写日历
            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();
        }


        //编写类 Employee
        Employee[] staff = new Employee[3];

        staff[0] = new Employee("42",743,2008,1,1);
        staff[1] = new Employee("Mlynar",367*3,1998,4,15);
        staff[2] = new Employee("Texas",670,2000,5,17); //总是使用new操作符调用


        staff[0].raise_salary(330); //staff[0]为隐式参数,330为显式参数
        staff[1].raise_salary(180);
        staff[2].raise_salary(55*2);

        for(Employee e:staff){
            System.out.println("name = "+e.getName()+", salary = "+ e.getSalary()+", hireDay = "+ e.getHireDay());
        }


    }
}


//类:Employee
class Employee{
    private final String name; //private确保只有只有Employee类自身的方法可以访问这些实例域
    private  double salary;
    private final LocalDate hireDay; // 类中没有方法能更改此值,所以使用final

    public Employee(String n,double s,int y,int m,int d){
        name = n;
        salary = s;
        hireDay = LocalDate.of(y,m,d);
    }// 构造器,与类同名
    public  String getName(){
        return name;
    }
    public  double getSalary(){
        return salary;
    }
    public LocalDate getHireDay(){
        return  hireDay;
    }
    public void raise_salary (double per)
    {
        double raise = salary * per / 100;
        salary += raise;
    }

    //静态域
    /*
    private static int nextId = 1;
    public void setId(){
        id = nextId;
    }
    */

    //静态常量,如Math类中的: public static final double PI = 3.14159265358979323846;

    //静态方法,如Math中的pow(x,a)

    //工厂方法

    //main方法:可在类中单独添加main方法,然后使用java (类名)就可以单独执行此类中的main方法

    /*方法参数
    * 按值调用 & 按引用调用
    * 一个方法无法修改一个基本数据类型的参数,可以改变一个对象参数的状态
    * */
}

有错误还请dalao指正Orz

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值