javaSe基础进阶知识笔记1

文章详细介绍了Java中的静态成员变量和方法的使用,包括它们的内存机制、访问特点以及在类和方法中的应用。接着讨论了单例模式的实现,枚举的定义和使用,以及抽象类和接口的概念和用法。此外,还涵盖了多态的原理、内部类(包括静态内部类、成员内部类、局部内部类和匿名内部类)的使用,以及StringBuilder、Math和BigDecimal等Java常用API的示例。
摘要由CSDN通过智能技术生成

Static关键字

修饰成员变量、内存机制

在这里插入图片描述

package org.example.d1_static;

public class User {
    public static int onlineNumber=161;
    /**
     * 实例成员变量:无static修饰,属于每个对象,只能用对象名.成员变量名访问
     */
    private String name;
    private int age;
    public static void main(String[] args) {
        //目标:理解static修饰成员变量的作用和访问特点
        //1.类名.成员变量名
        System.out.println(User.onlineNumber);
//        System.out.println(User.age);//不能使用类名.
//        2.对象名.成员变量名
        User u=new User();

        u.age=11;
        System.out.println(u.age);
        u.name="张三";
        System.out.println(u.name);
        u.onlineNumber++;
        System.out.println(u.onlineNumber);
    }
}

在这里插入图片描述

static修饰成员方法的基本用法和内存机制

在这里插入图片描述

package org.example.d1_static;

public class Student {
    private String name;

    /**
     * 静态成员方法
     *
     * @param age1
     * @param age2
     * @return
     */
    public static int getMax(int age1, int age2) {
        return age1 > age2 ? age1 : age2;
    }
    /**
     * 实例成员方法
     */
    public void study(){
        System.out.println(name+"好好学习,天天向上");
    }

    public static void main(String[] args) {
        //类名.成员方法名
        System.out.println(Student.getMax(12, 35));
        //注意:同一个类中类名可以省略不写
        System.out.println(getMax(13, 34));

        //对象.实例方法
        Student s=new Student();
        s.name="猪八戒";
        s.study();

        //不推荐
        System.out.println(s.getMax(15, 24));
    }

}

在这里插入图片描述

static注意事项

在这里插入图片描述

package org.example.d1_static;

public class Test3 {
    //目标:理解static 访问相关语法 面试笔试题



    /**
     * 静态成员
     */
    public static int onlineNumber=89;
    public static void test2(){

        System.out.println("===test2=====");
    }

    /**
     * 实例成员
     */
    private String name;
    public void run(){
        System.out.println(name+"跑得块");
    }
    //3.静态方法中不可以出现this关键字
    public static void test3(){
//        System.out.println(this);//this代表当前对象
    }

    //2.实例方法可以访问静态成员,也可以访问实例成员
    public void go(){
        System.out.println(Test3.onlineNumber);
        test2();
        System.out.println(name);
        run();
    }

    //1.静态方法只能访问静态成员,不能直接访问实例成员
    public static void test(){
        System.out.println(Test3.onlineNumber);
        test2();
//        System.out.println(name);//不能直接访问实例成员
//        run();
    }

}

static应用知识-工具类

工具类是什么?
类中都是一些静态方法,每个方法都是以完成一个共用的功能为目的,这个类用来给系统开发人员共同使用的

在这里插入图片描述

package org.example.d2_static_util;

import java.util.Random;

/**
 * 工具类
 */
public class Util {

    /**
     * 注意:由于工具类无需创建对象,所以将其构造器私有化
     */
    private Util(){
    }
    /**
     * 静态方法
     * @return
     */
    public static String createVerifyCode(int n){
        //开发一个验证码
        String code = "";
        String data = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890";
        Random r = new Random();
        for (int i = 0; i < n; i++) {
            int index = r.nextInt(data.length());
            code += data.charAt(index);
        }
        return code;
    }
}

在这里插入图片描述

package org.example.d2_static_util;

public class ArrayUtil {
    /*
    构造器私有
     */
    private ArrayUtil(){

    }

    /*
    静态方法
     */
    public static String toString(int[] arr){
        if (arr==null){
            return null;
        }
        String result="[";
        for (int i = 0; i < arr.length; i++) {
            result +=(i==arr.length-1?arr[i]:arr[i]+", ");
        }
        result+="]";
        return result;
    }
}

static应用知识-代码块

在这里插入图片描述

package org.example.d3_static_code;

public class StaticDemo1 {

    public static String schoolName;
    /**
     * 静态代码块,有static修饰,属于类,与类一起优先加载一次,自动触发执行
     * 作用:可以用于初始化一些静态资源
     */
    static {
        System.out.println("-------------静态代码块被执行-----------");
        schoolName="黑马";

    }

    public static void main(String[] args) {
        System.out.println("==========main方法执行================");
        System.out.println(schoolName);
    }
}

package org.example.d3_static_code;

public class StaticDemo2 {
    private String name;
    public StaticDemo2(){
        System.out.println("======无参构造器被触发执行======");
    }

    /**
     * 理解实例代码块(构造代码块):无static修饰,属于对象,每次构建对象时都会触发一次
     * 初始化实例资源
     */
    {
        System.out.println("===========实例代码块被触发执行==========");
        name="张三";
    }

    public static void main(String[] args) {
        StaticDemo2 s1=new StaticDemo2();
        System.out.println(s1.name);
        StaticDemo2 s2=new StaticDemo2();

    }
}

静态代码块的应用案例

在这里插入图片描述

package org.example.d3_static_code;

import java.util.ArrayList;

public class StaticTest3 {
    public static ArrayList<String> cards=new ArrayList<>();

    static {
        String[] size={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
        String[] colors={"♥","♣","♦","♠"};
        for (int i = 0; i < size.length; i++) {
            for (int j = 0; j < colors.length; j++) {
                String card=size[i]+colors[j];
                cards.add(card);
            }
        }
        cards.add("小王");
        cards.add("大王");
    }

    public static void main(String[] args) {
        System.out.println("新牌:"+cards);
    }
}

static应用知识-单例模式

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

package org.example.d4_static_singleinstance;

public class SingleInstance {

    private static SingleInstance instance;

    public static SingleInstance getInstance(){
        if (instance==null){
            instance=new SingleInstance();
        }
        return instance;
    }
    /**
     * 构造器私有
     */
    private SingleInstance(){}
}

package org.example.d4_static_singleinstance;

public class Test1 {
    public static void main(String[] args) {
        SingleInstance instance=SingleInstance.getInstance();
        System.out.println(instance);
    }
}

继承

概述、案例

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

package org.example.d5_extends;

public class People {
    private String name;
    private int age;

    public void queryCourse(){
        System.out.println(name+"在查看课表");
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

package org.example.d5_extends;

public class Student extends People{
    public void writeInfo(){
        System.out.println(getName()+"意见反馈");
    }
}

package org.example.d5_extends;

public class Test {
    public static void main(String[] args) {
        Student s=new Student();
        s.setName("孙悟空");
        s.setAge(18000);
        System.out.println(s.getAge());
        System.out.println(s.getName());
        s.queryCourse();
        s.writeInfo();
    }
}

在这里插入图片描述

特点、访问特点、方法重写

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

子类的对象用this关键字

在这里插入图片描述

在这里插入图片描述

构造器特点,this、super小结

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

package org.example.d6_extends_filed_method;

public class Student {
    private String name;
    private String schoolName;

    public Student() {

    }

    /**
     * 不填写学校,只填写姓名
     */
    public Student(String name){
        //借用兄弟构造器
        this(name,"黑马程序员");
    }

    public Student(String name, String schoolName) {
        this.name = name;
        this.schoolName = schoolName;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSchoolName() {
        return schoolName;
    }

    public void setSchoolName(String schoolName) {
        this.schoolName = schoolName;
    }
}

package org.example.d6_extends_filed_method;

public class Test {
    public static void main(String[] args) {
        //目标:理解this()的作用:本类构造器中访问本类兄弟构造器
        Student s1=new Student("孙悟空","天地学院自学");
        Student s2=new Student("张三丰");
        System.out.println(s1.getName());
        System.out.println(s1.getSchoolName());
        System.out.println(s2.getName());
        System.out.println(s2.getSchoolName());
    }
}

语法

在这里插入图片描述

权限修饰符

在这里插入图片描述

protected访问控制符在其他包的子类中只能用子类对象访问,不能用父类对象

final

在这里插入图片描述

package org.example.d3_final;

public class Test {
    //修饰静态成员变量
    public static final String schoolName = "黑马";

    public static void main(String[] args) {
        //目标:记住final的语法
        //1.final修饰类,类不能被继承
        //2.final修饰方法,方法不能被重写
        //3.final修饰变量,变量有且只能被赋值一次
        final double rate = 3.14;
//        rate=90;
//        schoolName="上";

        //final修饰引用类型的变量
        final Teacher t=new Teacher("猪八戒");
//        t=null;
        t.setName("猴子");

    }
}

class Teacher {
    private String name="孙悟空";

    public Teacher(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

/*
2.修饰方法
class Student extends People{
    @Override
    public void eat() {
        System.out.println("学生要吃很多饭");
    }
}

class People{
    public final void eat(){
        System.out.println("人要吃饭");
    }
}
*/

/*
1.final修饰类
class Wolf extends Animal{

}

final class Animal{

}
*/

常量

在这里插入图片描述

枚举

在这里插入图片描述

package org.example.d5_enum;

/**
 * 枚举类
 */
public enum Season {
    //枚举类的第一行必须罗列枚举类的对象名称,建议全部大写
    SPRING,SUMMER,AUTUMN,WINTER;
}

在这里插入图片描述

抽象类

在这里插入图片描述
在这里插入图片描述

package org.example.d7_abstract_test;

public abstract class Card {
    private String userName;
    private double money;


    /**
     * 定义一个支付方法:表示卡片可以支付
     * 抽象方法
     * @param money
     */
    public abstract void pay(double money);

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public double getMoney() {
        return money;
    }

    public void setMoney(double money) {
        this.money = money;
    }
}

package org.example.d7_abstract_test;

public class GoldCard extends Card{
    @Override
    public void pay(double money) {
        System.out.println("您当前消费:"+money);
        System.out.println("您实际余额是:"+getMoney());
        //优惠价
        double rs=money*0.8;
        System.out.println("您实际消费为:"+rs);
        //更新账户余额
        setMoney(getMoney()-rs);
    }
}

package org.example.d7_abstract_test;

public class Test {
    public static void main(String[] args) {
        //目标:学习一下抽象类的基本使用,做父类,被继承,重写抽象方法
        GoldCard c=new GoldCard();
        c.setMoney(10000);
        c.setUserName("孙悟空");

        c.pay(800);
        System.out.println("您的剩余余额为:"+c.getMoney());
    }
}

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

package org.example.d8_abstract_template;

public abstract class Student {
    public final void write() {
        System.out.println("\t\t\t\t《我的爸爸》");
        System.out.println("你的爸爸是啥样,来说说:");
        System.out.println(writeMain());
        System.out.println("你的爸爸确实太好了");
    }

    public abstract String writeMain();
}

package org.example.d8_abstract_template;

public class StudentChild extends Student{
    @Override
    public String writeMain() {
        return "我的爸爸总是给我买东西吃~~~";
    }
}

package org.example.d8_abstract_template;

public class StudentMiddle extends Student{
    @Override
    public String writeMain() {
        return "我的爸爸总是给我很多钱~~~~~~~~";
    }
}

package org.example.d8_abstract_template;

public class Test {
    public static void main(String[] args) {
        //目标:理解模板方法模式的思想和使用步骤
        StudentMiddle s1=new StudentMiddle();
        s1.write();
        StudentChild s2=new StudentChild();
        s2.write();
    }
}

接口

package org.example.d9_interface;

/**
 * 申明一种方法,体现一种规范,规范一定是公开的
 */
public interface InterfaceDemo {
    //目标:接口中的成分特点,jdk8之前为常量和抽象方法
    //1.常量
    //注意:由于接口体现规范思想,规范默认都是公开的,所以代码层面public static final可以默认不写
    String name="黑马程序员";
//    public static final String name="黑马程序员";

    
    //2.抽象方法
    //注意:由于接口体现规范思想,规范默认都是公开的,所以代码层面public abstract可以默认不写
    void run();
//    public abstract void run();
}

在这里插入图片描述

package org.example.d10_interface_implement;

public interface SportMan {
    void run();
    void competition();
}

package org.example.d10_interface_implement;

public class PingPongMan implements SportMan{
    private String name;

    public PingPongMan(String name){
        this.name=name;
    }

    @Override
    public void run() {
        System.out.println(name+"必须要跑步训练~~");
    }

    @Override
    public void competition() {
        System.out.println(name+"要参加比赛,为国争光!");
    }
}

package org.example.d10_interface_implement;

public class Test {
    public static void main(String[] args) {
        //目标:理解接口的基本使用,被类实现
        PingPongMan p=new PingPongMan("许欣");
        p.run();
        p.competition();
    }
}

在这里插入图片描述

package org.example.d10_interface_implement;

public interface SportMan extends Low,People{
    void run();
    void competition();
}

package org.example.d10_interface_implement;

public interface Low {
    void rule();
}

package org.example.d10_interface_implement;

public interface People {
    void eat();
}

package org.example.d10_interface_implement;

public class PingPongMan implements SportMan{
    private String name;

    public PingPongMan(String name){
        this.name=name;
    }

    @Override
    public void run() {
        System.out.println(name+"必须要跑步训练~~");
    }

    @Override
    public void competition() {
        System.out.println(name+"要参加比赛,为国争光!");
    }

    @Override
    public void rule() {
        
    }

    @Override
    public void eat() {

    }
}

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

package org.example.d11_interface_extends;

public interface SportMan {
    /**
     * 1.jdk8开始:默认方法(实例方法)
     * 必须用default修饰,默认用public修饰
     * 只能过继给实现类,由实现类的对象进行调用
     */
    default void run(){
        //go();
        System.out.println("跑的快~~");
    }
    /**
     * 2.静态方法
     * 必须用static修饰,默认用public修饰
     * 接口的静态方法,必须用接口名来调用
     */
    static void inAddr(){
        System.out.println("静态方法的调用");
    }

    /**
     * 3.私有方法
     * jdk9才开始使用 必须在接口内部才能使用
     */
//    private void go(){
//        System.out.println("开始跑~~");
//    }
}

class PingPongMan implements SportMan{

}

class Test{
    public static void main(String[] args) {
        PingPongMan p=new PingPongMan();
        p.run();

        SportMan.inAddr();
    }
}

在这里插入图片描述

多态

在这里插入图片描述

package org.example.d1_polymophic;

/**
 * 目标:认识多态,理解多态的形式和概念
 */
public class Test {
    public static void main(String[] args) {
        //多态形式          父类类型   对象名称=new 子类构造器
        Animal a=new Dog();
        a.run();//对于方法:编译看左边,运行看右边
        System.out.println(a.name);//对于变量:编译看左,运行也看左

        Animal a2=new Tortoise();
        a2.run();//编译看左边,运行看右边
        System.out.println(a2.name);
    }
}

class Tortoise extends Animal{
    public String name="子类乌龟";

    @Override
    public void run() {
        System.out.println("乌龟跑的很慢");
    }
}

class Dog extends Animal{

    public String name="子类狗";

    @Override
    public void run() {
        System.out.println("狗跑得很快");
    }
}

abstract class Animal{
    public String name="父类动物";
    public abstract void run();
}

在这里插入图片描述
在这里插入图片描述

package org.example.d1_polymophic;

/**
 * 目标:学习多态类型下的自动类型转换
 */
public class Test {
    public static void main(String[] args) {
        //自动类型转换
        Animal a=new Dog();
        a.run();

        //强制类型转换
        Animal a2=new Tortoise();
        a2.run();

        Tortoise t= (Tortoise) a2;//从父类类型到子类类型必须强制类型转换
        t.layEggs();

//        Dog d= (Dog) a2;//强制类型转换,编译时不会报错

        if (a2 instanceof Tortoise){
            Tortoise t1= (Tortoise) a2;
        }else if (a2 instanceof Dog){
            Dog d2= (Dog) a2;
            d2.lookDoor();
        }

    }
}

class Tortoise extends Animal{
    public String name="子类乌龟";

    @Override
    public void run() {
        System.out.println("乌龟跑的很慢");
    }

    /**
     * 独有方法
     */
    public void layEggs(){
        System.out.println("乌龟在下蛋");
    }

}

class Dog extends Animal{

    public String name="子类狗";

    @Override
    public void run() {
        System.out.println("狗跑得很快");
    }
    /**
     * 独有功能
     */
    public void lookDoor(){
        System.out.println("狗在看门");
    }
}

abstract class Animal{
    public String name="父类动物";
    public abstract void run();
}

在这里插入图片描述

package org.example.d2_polymophic_test;

public class Computer {
    private String name;

    public Computer(String name) {
        this.name = name;
    }

    public void start(){
        System.out.println(name+"电脑开机了");
    }

    /**
     * 提供安装USB的设备入口
     */
    public void installUSB(USB u){
        //多态
        u.connect();
        //独有功能:先判断,再强转
        if (u instanceof KeyBoard){
            KeyBoard k= (KeyBoard) u;
            k.keyDown();
        }else if (u instanceof Mouse){
            Mouse m= (Mouse) u;
            m.dbClick();
        }
        u.unconect();
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

package org.example.d2_polymophic_test;

public class KeyBoard implements USB{
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public KeyBoard(String name) {
        this.name = name;
    }


    /**
     * 独有功能
     */

    public void keyDown(){
        System.out.println(name+"敲击了:来了老弟,666");
    }


    @Override
    public void connect() {
        System.out.println(name+"成功连接电脑");
    }

    @Override
    public void unconect() {
        System.out.println(name+"成功从电脑中断开");
    }
}

package org.example.d2_polymophic_test;

public class Mouse implements USB{
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Mouse(String name) {
        this.name = name;
    }


    /**
     * 独有功能
     */

    public void dbClick(){
        System.out.println(name+"双击点亮小红心");
    }


    @Override
    public void connect() {
        System.out.println(name+"成功连接电脑");
    }

    @Override
    public void unconect() {
        System.out.println(name+"成功从电脑中断开");
    }
}

package org.example.d2_polymophic_test;

public class Test {
    public static void main(String[] args) {
        //创建电脑对象
        Computer c=new Computer("联想");
        c.start();

        //创建鼠标和键盘对象
        USB u=new Mouse("华为");
        c.installUSB(u);

        USB u1=new KeyBoard("小米键盘");
        c.installUSB(u1);
    }
}

package org.example.d2_polymophic_test;

public interface USB {
    void connect();
    void unconect();
}

内部类

概述

在这里插入图片描述
在这里插入图片描述

静态内部类

在这里插入图片描述

在这里插入图片描述

package org.example.d5_innerclass_static;

/**
 * 外部类
 */
public class Outer {

    public static int a=10;
    private String hobby;

    /**
     * 学习静态成员内部类
     */
    public static class Inner{
        private String name;
        private int age;
        public static String SchoolName="黑马";

        public Inner() {
        }

        public void show(){
            System.out.println(a);
//            System.out.println(hobby);//报错!
//            Outer o=new Outer();
//            System.out.println(o.hobby);
        }

        public Inner(String name, int age) {
            this.name = name;
            this.age = age;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }
    }
}

package org.example.d5_innerclass_static;

public class Test {
    public static void main(String[] args) {
        Outer.Inner inner=new Outer.Inner("张三",23);
        System.out.println(inner.getAge());
        System.out.println(inner.getName());
    }
}

成员内部类

在这里插入图片描述
在这里插入图片描述

package org.example.d5_innerclass_static;

/**
 * 外部类
 */
public class Outer {

    public static int a=10;
    private String hobby="打球,游泳,下棋";

    /**
     * 学习成员内部类,不加static修饰,属于外部类
     */
    public class Inner{
        private String name;
        private int age;
        //public static String SchoolName="黑马";//jdk16开始支持

        public Inner() {
        }

        public void show(){
            System.out.println("静态"+a);
            System.out.println(hobby);
//            Outer o=new Outer();
//            System.out.println(o.hobby);
        }

        public Inner(String name, int age) {
            this.name = name;
            this.age = age;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }
    }
}

package org.example.d5_innerclass_static;

public class Test {
    public static void main(String[] args) {
        Outer.Inner inner=new Outer().new Inner("张三",23);
        System.out.println(inner.getAge());
        System.out.println(inner.getName());
        inner.show();
    }
}

在这里插入图片描述

package org.example.d6_innerclass;

public class Test {
    public static void main(String[] args) {
        People.Heart heart=new People().new Heart();
        heart.show();
    }
}

class People{
    private int heartbeat=150;
    public class Heart{
        private int heartbeat=110;

        public void show(){
            int heartbeat=78;
            System.out.println(heartbeat);//78
            System.out.println(this.heartbeat);//110
            System.out.println(People.this.heartbeat);//150
        }
    }
}

局部内部类

在这里插入图片描述

package org.example.d7_innerclass;

/**
 * 了解局部内部类
 */
public class Test {
    public static void main(String[] args) {
        class Cat{
            private String name;

            public String getName() {
                return name;
            }

            public void setName(String name) {
                this.name = name;
            }
        }
        Cat c=new Cat();
        c.setName("叮当猫~");
        System.out.println(c.getName());
    }
}

匿名内部类

在这里插入图片描述

package org.example.d8_innerclass_anonymous;

/**
 * 目标:学习匿名内部类的格式和特点
 */

public class Test {
    public static void main(String[] args) {
        Animal a=new Animal() {
            @Override
            public void run() {
                System.out.println("老虎跑的快");
            }
        };
        a.run();
    }
}

abstract class Animal{
    public abstract void run();

}

在这里插入图片描述

package org.example.d8_innerclass_anonymous;

/**
 * 目标:学习匿名内部类的使用方式
 */
public class Test2 {
    public static void main(String[] args) {
        Swimming s=new Swimming() {
            @Override
            public void run() {
                System.out.println("学生游泳游得很快乐");
            }
        };
        go(s);
        System.out.println("=======================");
        Swimming s2=new Swimming() {
            @Override
            public void run() {
                System.out.println("老师游得很笨拙");
            }
        };
        go(s2);

        System.out.println("===========================");
        go(new Swimming() {
            @Override
            public void run() {
                System.out.println("运动员游的很快");
            }
        });

    }

    public static void go(Swimming s){
        System.out.println("开始");
        s.run();
        System.out.println("结束");
    }
}

interface Swimming{
    void run();
}

在这里插入图片描述

package org.example.d8_innerclass_anonymous;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 * 通过GUI编程 理解匿名内部类的真实使用场景
 */

public class Test3 {
    public static void main(String[] args) {
        //1.创建窗口
        JFrame win=new JFrame("登录界面");
        JPanel panel=new JPanel();
        win.add(panel);

        //2.创建按钮

        JButton btn=new JButton("登录");

       /* //注意:讲解匿名内部类的使用
        btn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(win,"点我一下说明爱我");
            }
        });*/

        btn.addActionListener(e -> JOptionPane.showMessageDialog(win,"别说话,吻我!") );

        //3.将按钮添加到桌布
        panel.add(btn);

        //4.展示窗口
        win.setSize(400,300);
        win.setLocationRelativeTo(null);
        win.setVisible(true);
    }
}

常用API

Object

在这里插入图片描述
都是为了让子类区重写

package org.example.d9_api_object;

import java.util.Objects;

public class Student {
    private String name;
    private char sex;
    private int age;

    public Student() {
    }

    public Student(String name, char sex, int age) {
        this.name = name;
        this.sex = sex;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public char getSex() {
        return sex;
    }

    public void setSex(char sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", sex=" + sex +
                ", age=" + age +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return sex == student.sex &&
                age == student.age &&
                Objects.equals(name, student.name);
    }

}

package org.example.d9_api_object;

/**
 * 目标:掌握object类中toString方法和equals方法的使用
 */

public class Test1 {
    public static void main(String[] args) {
        Student s=new Student("孙悟空",'男',4567);
        System.out.println(s.toString());
        //直接输出对象变量,默认可以省略toString调用不写的
        System.out.println(s);

        Student s1=new Student("孙悟空",'男',4567);
        Student s2=new Student("孙悟空",'男',4567);
        //equals默认比较俩个对象的地址是否相同
        System.out.println(s1.equals(s2));
        System.out.println(s1==s2);
    }
}

Objects

在这里插入图片描述

package org.example.d10_api_objects;

import java.util.Objects;

/**
 * 目标:掌握objects的常用方法:equals和isNull方法
 */
public class Test {
    public static void main(String[] args) {
        String s1=null;
        String s2=new String("heima ");

        System.out.println(Objects.equals(s1,s2));

        System.out.println(Objects.isNull(s1));
    }
}

StringBuild

在这里插入图片描述
在这里插入图片描述

package org.example.d11_api_stringbuilder;

/**
 *
 *  目标:学会使用stringBuilder操作字符串
 */
public class StringBuilderDemo1 {
    public static void main(String[] args) {
        StringBuilder sb=new StringBuilder();
        sb.append("a");
        sb.append("b");
        sb.append("c");
        sb.append(false);
        sb.append(6);
        sb.append(9.0);
        System.out.println(sb);

        //支持链式编程
        StringBuilder sb1=new StringBuilder();
        sb1.append("a").append("b").append("c").append("我爱你中国");
        System.out.println(sb1);

        //反转
        sb1.reverse().append(110);
        System.out.println(sb1);

        System.out.println(sb1.length());

        //注意:StringBuild只是拼接字符串的手段,效率好
        //最终目的还是要恢复成String类型
        StringBuilder sb2=new StringBuilder();
        sb2.append("d123").append("345");
        //恢复成String类型
        String rs=sb2.toString();
        check(rs);
    }
    public static void check(String data){
        System.out.println(data);
    }
}

在这里插入图片描述
在这里插入图片描述

String主要每次都创建俩个对象,比较费内存,所以StringBuild性能更好,因为只创建一次且一个StringBuild对象。

在这里插入图片描述

package org.example.d11_api_stringbuilder;

public class StringBuildTest2 {
    public static void main(String[] args) {
        int[] arr1=null;
        System.out.println(toString(arr1));

        int[] arr2={56,8,35,56};
        System.out.println(toString(arr2));

        int[] arr3={};
        System.out.println(toString(arr3));
    }

    public static String toString(int[] arr){
        if (arr!=null){
            StringBuilder sb=new StringBuilder("[");
            for (int i = 0; i < arr.length; i++) {
                sb.append(arr[i]).append(i==arr.length-1?"":" ,");
            }
            sb.append("]");
            return sb.toString();
        }else {
            return null;
        }
    }
}

Math

在这里插入图片描述

package org.example.d12_math;

public class Demo1 {
    public static void main(String[] args) {
        //1.取绝对值
        System.out.println(Math.abs(10));//10
        System.out.println(Math.abs(-78));//78

        //2.向上取整
        System.out.println(Math.ceil(4.6789));//5.0
        //3.向下取整
        System.out.println(Math.floor(5.4567));//5.0
        //4.求指数次方
        System.out.println(Math.pow(2, 3));//8.0
        //5.四舍五入
        System.out.println(Math.round(456.678));//457
        System.out.println(Math.round(5.08));//5

        System.out.println(Math.random());//0.0~1.0

        //拓展 生成3-9之间的某个数
        int data=(int)((Math.random()*7)+3);
        System.out.println(data);
    }
}

System

在这里插入图片描述

package org.example.d13_system;

import java.lang.reflect.Array;
import java.util.Arrays;

public class SystemDemo {
    public static void main(String[] args) {
        System.out.println("程序开始");

        //System.exit(0);//jvm终止

        //计算机从1970年1.1日0:0:0开始走到现在的值
        long time=System.currentTimeMillis();
        System.out.println(time);
        //进行时间计算:性能分析
        long startTime=System.currentTimeMillis();
        for (int i = 0; i < 100000; i++) {
            System.out.println("输出"+i);
        }
        long endTime=System.currentTimeMillis();
        System.out.println((endTime-startTime)/1000.0+"s");

        //数组的拷贝
        /*
        arraycopy(Object src,  int  srcPos,
                                        Object dest, int destPos,
                                        int length);
            被拷贝的数组
            从那个索引位置开始拷贝
            复制的目标数组
            粘贴位置
            拷贝元素个数
         */
        int[] arr1={10,20,30,40,50,60,70};
        int[] arr2=new int[6];//[0,0,0,0,0,0]===>[0,0,40,50,60,0]
        System.arraycopy(arr1,3,arr2,2,3);
        System.out.println(Arrays.toString(arr2));

        System.out.println("程序结束");
    }
}

BigDecimal

在这里插入图片描述

package org.example.d14_bigdecimal;

import java.math.BigDecimal;
import java.math.RoundingMode;

public class BigDecimalDemo {
    public static void main(String[] args) {
        //浮点型运算存在精度失真问题
        System.out.println(0.09+0.01);
        System.out.println(1.0-0.32);
        System.out.println(1.015*100);
        System.out.println(1.301/100);
        //结果如下:
//        0.09999999999999999
//        0.6799999999999999
//        101.49999999999999
//        0.013009999999999999

        System.out.println("===========================");
        double a=0.1;
        double b=0.2;
        double c=a+b;
        System.out.println(c);
        System.out.println("=======================");

        //包装浮点型数据为大数据对象 BigDecimal
        BigDecimal a1=BigDecimal.valueOf(a);
        BigDecimal b1=BigDecimal.valueOf(b);
        BigDecimal c1=a1.add(b1);
        BigDecimal c2=a1.subtract(b1);
        BigDecimal c3=a1.multiply(b1);
        BigDecimal c4=a1.divide(b1);

        //目的:double
        double rs1=c1.doubleValue();
        System.out.println(rs1);

        System.out.println("====================");
        System.out.println(c1);
        System.out.println(c2);
        System.out.println(c3);
        System.out.println(c4);
        System.out.println("=================");
        //注意事项:bigDecimal一定要做精度运算
        BigDecimal a11=BigDecimal.valueOf(10.0);
        BigDecimal b11=BigDecimal.valueOf(3.0);
        /**
            参数一:除数 参数二:保留小数位 参数三:舍入模式
         */
        BigDecimal c11=a11.divide(b11,2, RoundingMode.HALF_EVEN);
        System.out.println(c11);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值