Java零基础系列课程-JavaSE基础篇
Lecture:波哥
Java
是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java
虚拟机,Java
仍是企业和开发人员的首选开发平台。
二、类和对象
现实世界是由什么组成的?
世界是由对象组成的
1.类和对象的概念
对象:是具体的事物
对象:张三、李四、王五、赵六
抽取上述对象的相同的部分:
年龄、姓名、身高、体重、打牌、去隔壁老王家、唱歌、跳舞、打王者荣耀、吃鸡…
天使类:
具体的四个天使对象:
抽象u 他们的 共同 的特点
- 带翅膀(带翅膀的不一定是天使,也可能是鸟人)
- 女孩
- 善良
2. Java类描述事物
目前我们已经可以用计算机来表示八大基本数据类型,但是我们在开发的时候还要存储其他的数据,比如 一个人,一条狗,一张图片,一个视频等等,这种情况我们应该怎么实现?
我们学习编程语言的目的就是为了模拟现实世界的事物,实现信息化。其实呢在计算中使用Java语言模拟现实时间是很简单的,Java为我们提供了 类
,所有Java是通过 类
来描述世界的
现实生活中如何描述一个事物:
- 属性 该事物的特征描述
- 行为 方法,该事物的动作行为
举个栗子描述:表示一条狗
- 属性 狗的品种 狗的颜色 狗的体重
- 行为 跳 叫 睡 吃
我们学习Java语言的最基本单位是类,在Java中使用 类 来描述事物
3.类和对象的关系
类:类是抽象的,是一组相关的属性和行为的集合,可以看出一个模板
举例: 老婆 翠花 = new 老婆();
对象: new 老婆(); 是一个对象, 取了一个名字叫 翠花
引用 叫 翠花相当于叫了老婆对象
对象的特征:
属性:对象具有的各个特征
每个对象的每个属性都拥有特定值
行为:对象执行的操作
对象:用来描述客观事物的一个实体,由一组属性和方法构成
列举出图片中的这辆跑车的属性和方法
列举出下图小狗的属性和行为
类是抽象的概念,仅仅是模板,比如说: 人
对象是一个你能够看得到。摸得着的具体的实体
4.类和对象的具体使用
4.1 类的定义
类的理解:
- 成员变量表示就是事物的属性
- 成员方法表示就是事物的行为
语法格式:
java">[访问权限修饰符] class 类名 {成员变量;成员方法;
}
定义一个类的步骤:
java">package com.bobo.oop;/*** [访问权限修饰符] class 类名 {成员变量;成员方法;}* @author dpb**/
public class OOPDemo01 {public static void main(String[] args) {}
}class Dog{// --- 定义相关的属性// 姓名String name;// 年龄int age;// 颜色String color;// --- 定义相关的行为 方法public void eat(){System.out.println("吃大骨头...");}public void jump(){System.out.println("跳跃...");}}
4.2 对象的创建和使用
对象的理解:
4.2.1 如何创建对象
语法格式:
java">类名 对象名 = new 类名();
java"> /*** 程序的入口* * @param args*/public static void main(String[] args) {// 创建一个Dog对象Dog wangcai = new Dog();System.out.println(wangcai);}
4.2.2 如何使用对象中的属性和方法
对象创建出来了,如果调用相关的属性和方法呢?在Java中引用对象的成员:使用 ’ . ’ 进行操作
java">package com.bobo.oop;/*** [访问权限修饰符] class 类名 {成员变量;成员方法;}* @author dpb**/
public class OOPDemo01 {/*** 程序的入口* * @param args*/public static void main(String[] args) {// 创建一个Dog对象Dog wangcai = new Dog();System.out.println(wangcai);System.out.println(wangcai.name);System.out.println(wangcai.age);System.out.println(wangcai.color);wangcai.name = "wangcai";wangcai.age = 3;wangcai.color = "白色";System.out.println(wangcai.name);System.out.println(wangcai.age);System.out.println(wangcai.color);// 成员方法的调用wangcai.eat();wangcai.jump();}
}class Dog{// --- 定义相关的属性// 姓名String name;// 年龄int age;// 颜色String color;// --- 定义相关的行为 方法public void eat(){System.out.println("吃大骨头...");}public void jump(){System.out.println("跳跃...");}}
4.2.3 课堂案例
1.编写一个学生类,输出学生相关的信息
java">package com.bobo.oop;public class OOPDemo02 {public static void main(String[] args) {Student zs = new Student();zs.printInfo();}}
// 定义一个学生类
class Student{// 定义相关的属性 姓名 年龄 班级 爱好String name;int age;String className;String hobby;// 定义相关的行为 打印学生信息public void printInfo(){System.out.println("name="+name+"\t age="+age + "\t className="+className+"\t hobby="+hobby);}
}
2.编写一个教员类,输出相关的信息
java">package com.bobo.oop;public class OOPDemo03 {public static void main(String[] args) {// 获取教员对象Teacher zl = new Teacher();zl.teacherName = "张三丰";zl.major = "数学";zl.printInfo();}}class Teacher{String teacherName; // 姓名String major; // 专业String course; // 课程String teachingAge; // 教龄public void printInfo(){System.out.println("teacherName:" + teacherName+ "\t major:" + major+ "\t course:" + course + "\t teachingAge:" + teachingAge);}}
3.定义一个管理员类
java">package com.bobo.oop;/*** 管理员类* 属性:* 账号* 密码* 行为:* 登录* 注销* @author dpb**/
public class Administrator {// 账号String userName;// 密码String password;/*** 判断账号密码是否正确* @return*/public boolean login(){System.out.println("账号登录...");if("zhangsan".equals(userName) && "123".equals(password)){return true;}return false;}public void logout(){System.out.println("退出登录...");}
}
java">package com.bobo.oop;public class TestAdministrator {/*** 创建两个管理员类的对象,并输出他们的信息* @param args*/public static void main(String[] args) {Administrator admin = new Administrator();admin.userName = "zhangsan";admin.password = "123";System.out.println(admin.userName + "\t" + admin.password);Administrator root = new Administrator();root.userName = "lisi";root.password = "111";System.out.println(root.userName + "\t" + root.password);}}
4.3 对象的内存分析
5.局部变量和成员变量
变量分为局部变量和成员变量,这两种类型的变量也是容易让大家混淆的地方,所以我们在此处详细介绍他们的区别:
5.1 定义的位置不同
局部变量:定义在方法体内或者声明在方法上(形参)
5.2 在内存中的位置不同
成员变量:在堆内存中存储
局部变量:在栈区中存储
5.3 初始化值不同
成员变量:有默认值
5.4 生命周期不同
生命周期:一个变量从创建到销毁的全过程
成员变量:随着对象的创建而创建,随着对象的销毁而销毁,具体的结束时间是在垃圾回收器空闲的时候销毁
局部变量: 随着方法的调用而创建,随着方法的执行结束而销毁
5.5 当局部变量和成员变量重名的时候
当局部变量和成员变量重名的时候,局部变量优先于成员变量(就近原则)
java">package com.bobo.oop02;public class OOPDemo01 {/*** 局部变量和成员变量* @param args*/public static void main(String[] args) {Dog dog = new Dog();System.out.println(dog.dogName);System.out.println(dog.dogAge);System.out.println(dog.dogColor);int x;int y;dog.dogName = "旺财";System.out.println(dog.dogName);dog.eat();}}// String dogHobby; 成员变量不能定义到 类体之外
// 定义一个Dog Java类
class Dog{// 成员变量public String dogName;public int dogAge;public String dogColor;// 定义一个方法public void eat(){System.out.println("--->"+dogName); // 成员变量String dogName = "小黑";System.out.println(dogName); // 局部变量// 。。。return ;}public void jump(){//System.out.println(a);}
}
6.值传递和引用传递
6.1 基本数据
基本数据类型作为形式参数,形参的改变不会影响实际参数,传递的是值本身
java">package com.bobo.oop02;public class OOPDemo02 {public static void main(String[] args) {Demo d = new Demo();int x = 10;System.out.println("方法调用之前x的值为:" + x); // 10d.change(x);// 调用Demo对象的方法 System.out.println("方法调用之后x的值为:" + x); // 10}}class Demo{public void change(int a){a += 5; // 局部变量System.out.println("方法中的a值:" + a); // 15}
}
输出的打印结果
方法调用之前x的值为:10
方法中的x值:15
方法调用之后x的值为:10
6.2 引用数据类
引用数据类型作为参数,形参的改变影响实际参数,传递的是地址值
java">package com.bobo.oop02;public class OOPDemo03 {public static void main(String[] args) {Student t = new Student();t.name = "张三";t.age = 22;System.out.println("方法调用之前学生的信息:" + t.name + "\t" + t.age);Demo02 d = new Demo02();// 调用了方法d.change(t);System.out.println("方法调用之后学生的信息:" + t.name + "\t" + t.age);}}class Demo02{public void change(Student s){s.name = "小明";s.age = 18;System.out.println("方法调用时学生的信息:" + s.name + "\t" + s.age);}
}class Student{String name;int age;
}
输出结果:
方法调用之前学生的信息:张三 22
方法调用时学生的信息:小明 18
方法调用之后学生的信息:小明 18
7. 匿名对象
java">new Dog();
new Demo02().change(new Student());
匿名对象的特点:对象只会被使用一次,作为调用者来说,之后就获取不到这个对象了
匿名对象一旦使用完成就会自动释放,节约内存资源
作为实际参数传递的时候会比较方便。