重温JavaSE08

本文介绍了Java编程中的基本概念,包括如何使用打断点调试、this关键字的作用、static关键字的特性、封装的优点以及包的组织结构,同时提及了IDEA中的快捷操作和访问控制机制。
摘要由CSDN通过智能技术生成

打断点(找bug时会用即可)

public class Demo1 {
    public static void main(String[] args) {
        House house = new House();
        house.id = "1";
        house.name = "别墅";
        System.out.println(house.toString());

    }
}
public class House {
    String id;
    static String name = null;
    public House() {
    }
}

打断点:会在运行这个代码之前中断一下,按笔直向下的箭头一步步执行

观看this和对象的地址是不是一个:

在这里插入图片描述
this的地址:
在这里插入图片描述
对象house的地址:
在这里插入图片描述
查看static是不是提前加载:

public class Demo2 {
    public static void main(String[] args) throws ClassNotFoundException {
        Class.forName("com.jr.curriculum.House");//这里打断点
        System.out.println("程序结束");
    }
}

在这里插入图片描述

this关键字(会用即可)

背下面干货分享

public class House {
    String id;
    static String name = null;

    public House() {
        name = name+"1";
    }
    public House(String id, String name) {
        this.id = id;
        this.name = name;
    }
    public String show(){
        return name;
    }
}
public class Demo1 {
    public static void main(String[] args) {
        House house = new House();
        house.id = "1";
        house.name = "别墅";
        System.out.println(house.toString());
    }
    /*
【this关键字】:代表当前程序正在操作的对象
    一个对象对应一个this
用途:
    1.this.属性:当前方法/代码块里,有同名局部变量存在,此时想要调用同名的成员变量,需要this.成员变量(例如有参构造就是)
    //2.this.方法():本类下,普通方法之间互相调用的时候,可以使用this.方法(),可以直接方法()
    3.this():本类下,构造方法之间互相调用的时候,必须使用this([参数列表])进行调用,还要满足必须是第一行
     */
}

当属性名字和形参发生重名的时候,或者 属性名字 和局部变量重名的时候,都会发生就近原则

static关键字(理解)

背下面干货分享

public class Demo2 {
    public static void main(String[] args) throws ClassNotFoundException {
        Class.forName("com.jr.curriculum.House");//映射
        House house = new House();
//        System.out.println(house.name);//不要这样用
        System.out.println(House.name);//应该类名.调用
        House house1 = new House();
        House house2 = new House();
        House house3 = new House();
        System.out.println(house1.show());//静态资源共享
        System.out.println(house3.show());//静态资源共享
    }
    /*
【static关键字】:代表当前对象所在的类
特点:
    1.提前加载到内存中,类第一次加载前,将静态信息加载到内存里,并且在构造前调用
    2.该类下,所有对象 共享静态资源
    3.规范来说调用应该:类名.静态变量/静态方法()
    4.静态资源存放在静态域里,(非静态资源存放在堆内存里)
用途:
    1.修饰属性:成员变量(类变量)
    2.修饰方法:1)public和static不分先后顺序
               2)静态方法不能调用非静态属性和非静态方法
               3)静态方法不能使用this关键字
    3.修饰代码块
    4.修饰内部类//继承后讲
     */
}

代码块(了解,方便看源码)

public class Demo3_Teacher {
    public Demo3_Teacher() {
        System.out.println("使用无参构造器创建对象");
    }
    {//构造代码块
        System.out.println("构造代码块被执行");
    }
    static {//静态代码块
        System.out.println("静态代码块被执行");
    }
}
public class Demo3 {
    public static void main(String[] args) {
        {//普通代码块
            int i = 9;
            for (; i < 1; i++) {
                System.out.println(i);
            }
        }
        int i = 0;
        Demo3_Teacher teacher = new Demo3_Teacher();
    }
    /*
    类的组成:属性,方法,构造方法,代码块,内部类
【代码块】(又叫结构快)
    作用:划分作用域    由{}组成
    分类:          位于:                    目的:
        普通代码块:位于方法中的代码块     划分局部变量的作用范围
        构造代码块:位于类里,方法外       类似构造器(实例化、初始化)
                构造代码块随着构造函数的执行而执行
        静态代码块:位于类里,方法外       加载完静态变量后,对静态变量做逻辑处理
        同步代码块://后面多线程学
    执行顺序:静态变量加载后->静态代码块->创建对象->构造代码块->构造方法
     */
}

包(了解)

在这里插入图片描述

package com.jr.curriculum;//当前文件在该包下

import java.util.Scanner;
import static java.lang.Math.*;//静态导入   只能导入包里的全部类,加载里面的资源
//import static java.lang.*;

public class Demo4 {
    int num;//默认权限修饰符,只能在本包里使用
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println(PI);
        System.out.println(random());
    }
    /*
【包】
    作用:
        1.分门别类存储文件,查找效率高
        2.区分同名类
        3.解决权限问题:
            默认权限修饰符:本包下的类可以使用默认属性/方法
    命名规则:
        1.名字全小写
        2.可以用.隔开,表示包的包含关系
        3.一般都是公司域名倒着写 : com.jd
        4.不能使用系统关键字:cul、con、com1...com9
    包的声明:
        package com.jr.curriculum;//包声明语句一般在非注释代码的第一行
    导包:alt+enter
        import java.util.Scanner;//import 全部包名.类名;
    导包方式:
        1.默认导包:系统自动帮忙导入 java.lang包下所以类(例:System、Stirng)
        2.关键字导包:import 全部包名.类名;     import 全部包名.*;
        3.手动导入包:java.sql.Date dt = new java.sql.Date();
        4.静态导包:当前类下所有资源信息都是静态的import static java.lang.Math.*;
        5.导包时候,* 不代表 子包;import com.jr.*; // 导包语句里:* 全部类,类里面的全部资源
     */
}

封装(理解)

IDEA快捷键:alt+insert->get和set

public class Demo5 {
    public static void main(String[] args) {
        Demo5_Student student = new Demo5_Student();
        student.setAge(200000000);
        System.out.println("学生的年龄是:"+student.getAge());
        Demo5_Student stu = new Demo5_Student("12","惠常哲",999999999);
        System.out.println(stu.getName()+"的年龄是:"+stu.getAge());
    }
    /*
    面向对象三大特征之一:封装、继承、多态[、接口]封装为了安全、继承为了重用、多态为了扩展(更厉害的是反射)
【封装】
    好处:提高代码的安全性
    步骤:私有属性,公有方法

属性的复制方式:构造器赋值、set方法赋值
     */
}
public class Demo5_Student {
    private String id;//私有属性
    private String name;
    private int age;
    public Demo5_Student(String id, String name, int age) {
        this.id = id;
        this.name = name;
        setAge(age);//注意这里!!!!!!!!!!!!!!!!!!!!!!!!!
    }
    public Demo5_Student() {//公有方法
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        if (age > 100){
            this.age = 18;
        }else {
            this.age = age;
        }
    }
}

在初始化时就岁恶意的赋值进行判断
在这里插入图片描述
在这里插入图片描述

其他(重点)

封装的好处:

提高代码的安全性,是隐私的属性,公有的方法

this关键字的作用

this是对象内部指代自身的引用

  1. this可以调用成员变量,通常用于解决成员变量和局部变量同名冲突

  2. this可以调用成员方法

  3. 同一个类中this可以在构造方法中调用重载的构造方法,且必须是构造方法的第一条语句。

    同一个类中的方法可以互相调用,this.可以省略不写。

static特点:

1.提前加载到内存中,类第一次加载前,将静态信息加载到内存里,并且在构造前调用

2.该类下,所有对象共享静态资源
3.规范来说调用应该:类名.静态变量/静态方法()
4.静态资源存放在静态域(方法区)里,(非静态资源存放在堆内存里)

static用途:

​ 1.修饰属性:成员变量(类变量)
​ 2.修饰方法:

​ 1)public和static不分先后顺序
​ 2)静态方法不能调用非静态属性和非静态方法
​ 3)静态方法不能使用this关键字

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值