一、idea
1.模块化开发
2.debug调试
a.设置断点 断点的设置:可能产生问题代码的位置 如果不知道就设置在第一行
b.使用debug的方式运行程序代码
c.观察代码的执行的流程 以及变量的值
d.发现问题 并解决问题
3.idea快捷键
2、psvm 提示主方法
3、sout 提示打印语句
4、ctrl+alt+l 格式化代码
5、ctrl+d 快速向下复制当前行
6、ctrl+y 删除当前行
7、alt+enter 智能提示
8、alt+insert 快速生成代码
9、ctrl+alt+t 快速包裹一段代码
10、ctrl+alt+v 快速添加引用
11、ctrl和+或者- 收缩或者展开单个方法
12、ctrl+Alt+shift+u 查看类关系图
13、ctrl+alt+m 选中的代码转换为方法
二、 面向对象思想
2.1面向对象的概念
1.面向对象思想是java中一种编程思想,在java中万物皆对象,所有事物都能用对象来进行描述
2.面向过程思想与面向对象思想
面向过程思想:注重于步骤 注重于过程 每一步都亲历亲为(员工)
面向对象思想:注重与解决问题的主题 注重于对象 不注重于过程(老板)
面向对象是基于面向过程 面向对象与面向过程相辅相成
3.使用面向对象思想的好处
更符合人的思考方式、简化程序的设计、由执行者变成了指挥者
4.面向对象的三大特征
1.封装 2.继承 3.多态
2.2类的概念
概念:类是一组属性与行为的集合
属性:用来描述事物的特征 一般是形容词或者名词
行为:用于描述事物执行的动作 一搬是动词
2.3对象的概念
概念:对象是类的具体表现 对象必须有类的属性与行为
类与对象的关系:类是对象的抽象 对象是类的具体表现
2.4定义类
语法:
访问修饰符 class 类名 {
//属性 ==>成员变量
//行为 ==>成员方法
}
例子:
package com.qf.test;
//狗类
public class Dog {
//定义成员变量
String name;//名字
String kind;//品种
int age;//年龄
//定义成员方法
//吃
public void eat(String food){
System.out.println("狗正在吃"+food);
}
//睡
public void sleep(){
System.out.println("狗正在睡觉");
}
}
2.5实例化对象
语法: 类名 对象名 = new 类名();
注意点:
前后的类名必须一致
对象名可以任意的定义 通俗易懂
后面的类名需要加上一个小括号
访问成员变量
成员变量赋值 语法: 对象名.属性名=值 例如 d.name ="多多"
成员变量取值 语法: 对象名.属性名 例如 d.name
访问成员方法
语法: 对象名.方法名(参数列表) 例如 d.eat("狗粮");
例子
package com.qf.test;
public class Test02 {
public static void main(String[] args) {
//实例化Dog对象
Dog dog = new Dog();
//给对象赋值
dog.name = "花花";
dog.kind = "边牧";
dog.age = 2;
//取值
System.out.println(dog.name+dog.kind+dog.age);
//调用成员方法
dog.eat("狗粮");
dog.sleep();
}
}
2.6成员变量的默认值
案例
需求:需求 定义一个手机类 给成员变量赋值 并且调用其方法
分析:
代码:
定义手机类
package com.qf.test;
public class Iphone {
//定义成员变量(属性)
String brand;//品牌
double price;//价格
String type;//型号
String color;//颜色
//定义成员方法
public void call(String who){
System.out.println("正在给"+who+"打电话");
}
public void send(){
System.out.println("正在给......小姐姐发信息");
}
}
定义测试类:
package com.qf.test;
public class Test03 {
public static void main(String[] args) {
//实例化对象
Iphone huawei = new Iphone();
//给属性赋值
huawei.brand = "华为";
huawei.color = "星耀黑";
huawei.price = 6999.9;
huawei.type = "Mate 40";
//取值
System.out.println(huawei.brand);
System.out.println(huawei.color);
System.out.println(huawei.price);
System.out.println(huawei.type);
//调用成员方法
huawei.call("刘亦菲");
huawei.send();
}
}
三、内存图
1.一个对象创建的内存图
2.两个引用指向同一个堆地址内存图
3.方法的参数是引用数据类型内存图
四、匿名对象
匿名对象:没有名称的对象 例如 new Person() 数组 new int [ ] {10,20,30}
使用场景:
1.使用匿名对象调用方法 有且仅有调用一次的时候
2.使用匿名对象作为方法的实际参数
3.使用匿名对象作为方法的返回值
注意点:
1.匿名对象可以给成员变量赋值 但是没有实际意义 因为取不到
2.匿名对象会优先被gc(垃圾回收器进行回收) 节省空间
例子:
定义一个Person类
package com.qf.test;
public class Person {
//定义成员变量
String name;
int age;
//定义一个成员方法
public void showInfo(){
System.out.println("某某去和某某公园约会");
}
}
定义一个测试类
package com.qf.test;
public class Test04 {
public static void main(String[] args) {
//仅调用一次类中方法时使用的匿名对象
new Person().showInfo();;
//匿名对象可以当做方法的实参
showP(new Person());
}
//形参为传入一个类对象
public static void showP(Person p){
System.out.println("hhh");
}
//匿名对象可以当做方法的返回值
public static Person show(){
return new Person();
}
}