今天是下午没课,从c++正式开始学习java的面向对象基础,看的是黑马程序员的课程,做点笔记记录一下。
目录
这一节重点是学习获取已有对并使用和学习自己设计对象并使用
之前学习的键盘录入技术就是对已有的对象进行使用
- public class Test {
- public static void main(String[] args) {
-
- // 1、得到一个随机数对象,用于得到随机数
- Random r = new Random();
-
- int data = r.nextInt(10) + 1 ; // 生成 1-10之间的随机数
-
- System.out.println(data);
- // 2、创建一个扫描器对象,用于接收用户输入的数据
-
- Scanner sc = new Scanner(System.in);
- System.out.println("请您输入您的年龄:");
-
- int age = sc.nextInt();
- System.out.println(age);
- } }
这里面对Random r = new Random()的调用就是获取已有对象并使用
在java中必须先设计类,才能获得对象
类相当于设计图:是对象共同特征的描述。
对象:是真实存在的具体实例
如何定义类呢
如何得到类的对象呢
如何使用对象呢
下面用具体案例表示
这里面Car就是类
对于以下代码
类
- public class Car {
- // 成员变量(属性)
- String name;
- double price;
- // 方法(行为)
- public void start(){
- System.out.println(name+"启动了!");
- }
- public void run(){
- System.out.println("售价为:" + price +"的" + name+"跑的快!");
- }
- }
对象
- public class Test {
- public static void main(String[] args) {
- Car c1 = new Car();
- c1.name = "奔驰GLC";
- c1.price = 39.78;
- System.out.println(c1.name);
- System.out.println(c1.price);
- c1.start();
- c1.run();
- Car c2 = new Car();
- c2.name = "宝马X3";
- c2.price = 38.98;
- System.out.println(c2.name);
- System.out.println(c2.price);
- c2.start();
- c2.run();
- }
- }
如何去分析其中内存的原理呢·
如下图,先分析方法区,在对象中新建了一个Car c1,由于用了new,这里面的会放在堆中,而Car在类中,其中的String name 和price皆为地址,且均为空,其指向成员方法。
它会把这些地址给Car c1,且c1指向与堆内存
总结
1.对象放在哪个位置?堆内存中2. Car c = new Car(); c变量名中存储的是什么?存储的是对象在堆内存中的地址。3. 成员变量(name、price)的数据放在哪里,存在于哪个位置?对象中,存在于堆内存中。
对于以下代码
类
- public class Student {
- String name;
- char sex;
- String hobby; // 爱好
- public void study(){
- System.out.println(“名称:” + name + “,性别:” + sex
- + “,爱好:" + hobby + "的学生:开始学习了!");
- }
- }
对象
- public class Test {
- public static void main(String[] args) {
- Student s1 = new Student();
- s1.name = "小明";
- s1.sex = '男';
- s1.hobby = "游戏、睡觉、听课";
- s1.study();
- // 把学生类型的s1变量赋值给学生类型的s2变量
- Student s2 = s1;
- s2.hobby = "爱提问";
- System.out.println(s2.name);
- System.out.println(s2.sex);
- System.out.println(s1.hobby);
- s2.study();
- } }
这里面定义了一个s2,s2存的也是s1存的地址,用了s2.hobby 会把s1.hobby的内容改掉,同样变成爱提问