java基础07 debug 类 类的运行过程

一、idea使用教程

1.创建模块
在这里插入图片描述
在这里插入图片描述
2.调试代码debug
A.设置断点,1.出现问题的代码处设置 2.设置在代码运行的第一行
B.debug运行
C.一步一步运行,观察变量的变化 以及代码执行的逻辑
D 发现问题,解决问题
在这里插入图片描述

在这里插入图片描述

二、常用快捷键

psvm + 回车:快速生成main方法;
sout + 回车:快速生成输出语句;
alt +1 :打开/隐藏工程目录,包,类;
alt +4:打开/隐藏控制台,运行结果;
ctrl +alt+L:格式化选中代码,好看,未选中即全部;
或者 ctrl +shift +enter:格式化即加空格
alt +enter;代码修正提示;有时要两下回车
数组名+ .fori +回车: 数组遍历
ctrl + alt + v:快速生成方法的返回值
ctrl + alt + M:抽取一段代码为方法
CTRL+d :向下复制一行
CTRL+x:剪切当前行
CTRL+/:批量加入单行注释,再按一次取消 选中
CTRL+shift+/:批量加入多行注释,再按一次取消 需选中
alt +shift+↑;上移当前行
alt +shift+↓;下移当前行
ctrl +鼠标点击 或 ctrl+alt+鼠标点击 进入底层代码解释
alt+insert 生成构造方法
ctrl+shift+alt+u 查看类的关系图
alt+7 或 ctrl+F12 查看类的有什么方法
Ctrl+F / Ctrl+Shift+F 按照文本的内容搜索
如果是看接口的底层,就用ctrl+alt
如果是看其他的底层,就双击锁定,然后两下shift即可.
如果看继承树,ctrl+h

三、面向对象概念

1.面向过程:注重过程 注重步骤 任何步骤亲力亲为 (员工)
面型对象:注重结果 注重解决问题的主体 不注重于步骤 (老板)偷懒
例子:洗衣服
面向过程 : 准备桶或盆==》装水==》放衣服==》放洗衣液==》揉搓==》拧干==》晾晒 注重过程
面向对象: 洗衣机(主题)== 》放衣服和洗衣机==》按下开始建==》晾晒 注重解决问题的主体
洗衣机相当于方法 方法里还是需要面向过程的步骤,只是直接调用方法可以偷懒,不需要一一写步骤了
2.java中面向对象与面向过程是相辅相成的 面向对象基于面向过程来进行开发
Java是基于面向对象的开发语言
3.面向对象的好处:简化程序的设计思想,由执行者变成指挥者,更加符合人的思考方式
4.面向对象的三大特证:封装 继承 多态

四、类

类是描述属性和行为的集合
属性:事物的特征,状态,描述 一般用名词修饰
行为: 事物执行的动作,方法,功能 一般用动词修饰

五、对象

对象是类的具体表现 对象肯定有类的属性和行为
例子:
人: 属性: 王小明 男 2000-02-02 175cm 60kg 行为:思考人生 吃饭 睡觉
对象是类的具体实例,类是对象的抽象 人类(抽象)–>王小明 (具体) 车 -->奔驰(具体)

六、代码语法

一)类的语法

1.语法:
访问修饰符 class 类名{}
例子:public class Student {}
2.成员变量:定义规则是一样 只能变量位置发生了改变 成员变量是在类中 方法外
3.成员方法:定义的规则是一样 只需要将访问修饰符 static 去掉
4.语法:
public class Student{
//成员变量
//成员方法
}
二)实例化对象
1.语法:
类名 对象名 = new 类名();
例子:Student stu = new Student();
2.对象访问属性 ==>赋值 取值
赋值:对象的名称.属性名=具体数据;
例子:stu.age=18;

注意因为在类中已经定义,不需要用int 了
取值:对象的名称.属性名
例子:stu.age
3.对象访问方法 ==>调用方法
语法:对象名.方法名(参数列表)
例子:stu.play();
例子
定义宠物类

public class Pet {
//成员变量
String name;
int age;
String color;
//成员方法
public void eat(String food){
System.out.println("吃"+food);
}
public void run(){
System.out.println("正在奔跑.....");
}
public void sleep(){
System.out.println("正在睡觉....");
}
}

定义测试类,实例化对象

public class Test04 {
public static void main(String[] args) {
//实例化宠物类
Pet p = new Pet();
//给成员变量进行赋值
p.name="小花";
p.age=2;
p.color="黄色";
//取值
System.out.println(p.name);
System.out.println(p.age);
System.out.println(p.color);
//调用方法
p.eat("狗粮");
p.run();
p.sleep();
}
}

七、成员变量默认值

在这里插入图片描述

八、创建对象的代码运行过程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
先在方法区加载class信息,生成 成员方法的地址 ,代码从上往下运行,运行main方法,运行方法就在栈内存开辟空间,先进后出,然后用new创建对象,一用new就在堆内存开辟空间,并生成地址值,将地址值赋给变量,对象是对象变量,然后堆内存中为赋值的成员变量生成默认值,映射方法区方法的地址值。
用new开辟的资源都是赋值给变量地址,变量地址能获取到就能找到并调用相关功能

import java.util.Scanner;

public class Test04 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Person [] array = new Person[5];
        for (int i = 0; i < array.length; i++) {
            Person p = new Person();
            System.out.println("请输入第"+(i+1)+"对象名字");
            p.name= sc.next();
            System.out.println("请输入第"+(i+1)+"对象年龄");
            p.age = sc.nextInt();
            array[i] = p;
        }
        for (int i = 0; i < array.length; i++) {
            array[i].show();
        }
    }
}

在for循环中,虽然每次都是命名对象名为p,但是每次new都会新开一个空间,其地址都被保存在数组中,可以通过数组找到其地址并调用相关功能,并不会发生冲突,如果没有for循环是不能命名相同的对象名,另外给同一个对象名赋新的地址,新地址会替换旧地址,旧地址就无法找到了,会被Java回收。

九、匿名对象

1.匿名对象:没有对象名的对象 语法: new 类名() 例子: new Student()
2.使用场景:
A. 使用匿名对象调用方法 方法只需要调用一次的时候使用
B. 作为方法的参数使用匿名对象
C. 作为方法的返回值的时候 使用匿名对象
3.注意点:
匿名对象是可以给成员变量进行赋值 但是没有实际意思 不能获取其值
4.好处: 节省内存空间 垃圾回收器 优先回收匿名对象

public class Test08 {
public static void main(String[] args) {
new Phone().send();
getMax(new int [] {20,40,60});
}
/**
* 作为方法返回值
* @return
*/
public static Phone getPhone(){
return new Phone();
}

十、成员变量与局部变量的区别

1.定义的位置不同
成员变量定义在方法外 类中
局部变量在方法中
2.存贮位置不同
成员变量在堆内存中
局部变量在栈内存中
3.生命周期不同
成员变量:随着对象的创建而开始 随着对象的销毁而结束
局部变量:随着方法执行而开始 随着方法的结束而结束
4.是否有默认值
成员变量是有默认值
局部变量 必须先赋值才能使用 没有默认值

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值