• 【原】Java学习笔记014


     1 package cn.temptation;
     2 
     3 public class Sample01 {
     4     public static void main(String[] args) {
     5         // 面向对象思想
     6         
     7         // 回顾编程语言思想进化之路:从面向过程到面向对象
     8         
     9         // 面向过程
    10         // 举例:
    11         // 1、冰箱门打开
    12         // 2、大象放进去
    13         // 3、冰箱门关上
    14         // 【面向过程的思路的着眼点在于动作的功能,思考打开、放入、关闭均为动作】
    15         
    16         // 面向对象:随着软件工程的成熟,人们根据自然的、正常的思考逻辑,从概念模型入手,考虑其特征及行为
    17         // 举例:
    18         // 比如:买手机,首先考虑的是有一个手机的概念模型,其特征(便携性、美观性等)及行为(打电话、发短信、上网等)迎合人们的一些方面的需要
    19         // 再去思考面向过程的放大象的这个例子
    20         // 为什么我们会想到打开冰箱门?因为冰箱在我们的头脑中已经形成了一个概念模型,我们知道它有一个特征(门),并且还有其行为(可以打开和关闭)
    21         // 为什么我们会想到大象可以放入冰箱中?因为冰箱给我们另一个特征(是一个大容器,换句话说就是其有容量)
    22         // 所以,我们人类的思考点还是自然而然的聚焦到概念模型上
    23         // 【面向对象的思路的着眼点在于概念模型的特征及行为】
    24         
    25         // 对象:大千世界中的万物都是对象
    26         // 关注对象,主要关注对象的两个方面:特征   和    行为
    27         // 举例:在淘宝上买衣服,关注衣服的外形、颜色、价格等等(特征),还要关注衣服的行为(是不是穿上衣服大家点赞等)
    28         
    29         // 面向对象的思考中,不但要考虑单个对象的特征和行为,而且要考虑对象和对象之间的关联关系
    30         // 举例:买一个手机,关注这个手机的各种参数(特征),还有手机的功能(打电话、上网等)(行为)
    31         //        除此之外,手机能使用,还得需要手机卡,手机卡是另一个对象,手机和手机卡之间有关联关系的(比如:只支持电信的手机就不能使用移动的卡)
    32         
    33         // 对象的特征:表征对象特点的描述,在Java中称为属性
    34         // 对象的行为:表征对象实现功能的途径,在Java中称为方法
    35         
    36         // 类:(成语:物以类聚)
    37         // 定义:在面向对象思想中,类是具有相同的属性 和 行为 的一系列物体的集合,具有抽象意味
    38         
    39         // 举例:学生类
    40         // 属性:学号、年龄、性别、姓名...
    41         // 行为:读书、考试、吃饭、睡觉...
    42         
    43         // 对象:
    44         // 定义:是类的具体表现形式,具体化的、实实在在的物体
    45         
    46         // 举例:张三    是个 学生(对象),他 是学生类的具体化的产物
    47     }
    48 }
     1 package cn.temptation;
     2 
     3 public class Sample02 {
     4     public static void main(String[] args) {
     5         /*
     6          * 类的形式
     7          * 
     8          * 修饰符             class     类名 {
     9          *      成员变量;
    10          *      成员方法;
    11          * }
    12          * 
    13          * 成员变量用来记录属性(特征)
    14          * 成员方法用来记录行为(动作)
    15          * 
    16          * 仅仅有一个类,只是有了一个模板,要具体的使用,还需要有对象
    17          * 依据类这个模板创建具体对象实例的方式或者过程,称为类的实例化,也就是说类的实例化得到的是具体的对象
    18          * 
    19          * 类   是  什么类型的?    类类型  是  一种类型,也是一种引用数据类型
    20          * 引用数据类型的存储特点:声明在栈上,具体的内容通过new关键字存储在堆中开辟的空间里
    21          * 
    22          * 类的实例化的格式:
    23          * 类名     对象名      =    new    类名();
    24          * 
    25          * 如何来使用类这个模板中定义了的成员变量 和  成员方法?
    26          * 借助于   点号运算符 .
    27          * 使用成员变量  对象名.成员变量
    28          * 使用成员方法  对象名.成员方法
    29          */
    30         
    31         // 类的实例化,得到一个具体的对象
    32         Student student = new Student();
    33         System.out.println(student);            // cn.temptation.Student@15db9742
    34         
    35         // 基本数据类型(值类型)的默认值
    36         // byte、short、int、long:0
    37         // float、double:0.0
    38         // char:'u0000'
    39         // boolean:false
    40         
    41         // 引用数据类型的默认值:null
    42         
    43         // 成员变量的使用(取值)
    44         System.out.println(student.studentNumber);        // 0
    45         System.out.println(student.studentName);            // null
    46         System.out.println(student.age);                    // 0
    47         System.out.println(student.gender);                // null
    48         
    49         // 针对成员变量的赋值
    50         student.studentNumber = 7;
    51         student.studentName = "张三";
    52         student.age = 18;
    53         student.gender = "男";
    54         
    55         // 成员变量的使用(取值)
    56         System.out.println(student.studentNumber);        // 7
    57         System.out.println(student.studentName);            // 钱博文
    58         System.out.println(student.age);                    // 18
    59         System.out.println(student.gender);                //60         
    61         // 成员方法的使用
    62         student.study();
    63         student.eat();
    64         student.say("我是钱博文,我喂自己袋盐!");
    65     }
    66 }
    67 
    68 // 类的定义:创建一个学生类
    69 class Student {
    70     // 成员变量
    71     // 学号
    72     int studentNumber;
    73     // 姓名
    74     String studentName;
    75     // 年龄
    76     int age;
    77     // 性别
    78     String gender;
    79     
    80     // 成员方法
    81     // 学习方法
    82     public void study() {
    83         System.out.println("书中自有颜如玉!");
    84     }
    85     
    86     // 吃饭方法
    87     public void eat() {
    88         System.out.println("民以食为天!");
    89     }
    90     
    91     // 说话方法
    92     public void say(String word) {
    93         System.out.println("说:" + word);
    94     }
    95 }
     1 package cn.temptation;
     2 
     3 public class Sample03 {
     4     public static void main(String[] args) {
     5         // 类的实例化
     6         
     7         // 类作为模板,自然可以创建出多个该类类型的对象
     8         Dog dog1 = new Dog();
     9         System.out.println(dog1);        // cn.temptation.Dog@15db9742
    10         
    11         Dog dog2 = new Dog();
    12         System.out.println(dog2);        // cn.temptation.Dog@6d06d69c
    13         
    14         // new关键字使用一次,就在内存的堆中开辟一块空间
    15     }
    16 }
    17 
    18 // 定义狗类
    19 class Dog {
    20     // 成员变量
    21     int id;
    22     String name;
    23     int age;
    24     
    25     // 成员方法
    26     
    27 }
     1 package cn.temptation;
     2 
     3 public class Sample04 {
     4     public static void main(String[] args) {
     5         // 需求:创建一个手机类,其特征为品牌(brand)、价格(price)、颜色(color);其行为有打电话、发短信
     6         
     7         // 类的实例化
     8         Phone phone = new Phone();
     9         phone.brand = "HUAWEI";
    10         phone.price = 1000;
    11         phone.color = "黑色";
    12         
    13         System.out.println("手机的品牌为:" + phone.brand + ",价格为:" + phone.price + ",颜色为:" + phone.color);
    14         
    15         phone.call("110");
    16         phone.sendMsg("120", "快回来吃饭!!");
    17     }
    18 }
    19 
    20 // 定义手机类
    21 class Phone {
    22     // 成员变量
    23     // 品牌
    24     String brand;
    25     // 价格
    26     int price;
    27     // 颜色
    28     String color;
    29     
    30     // 成员方法
    31     // 打电话
    32     public void call(String number) {
    33         System.out.println("打电话给:" + number);
    34     }
    35     
    36     // 发短信
    37     public void sendMsg(String number, String msg) {
    38         System.out.println("发短信给:" + number + ",内容为:" + msg);
    39     }
    40 }
     1 package cn.temptation;
     2 
     3 public class Sample05 {
     4     public static void main(String[] args) {
     5         // 成员变量  和  局部变量
     6         
     7         Test test = new Test();
     8         
     9 //        System.out.println("成员变量i:" + test.i);
    10         // 对于只声明不赋值的成员变量,使用时使用的是它的默认值
    11         
    12 //        test.show1();
    13         test.show2(4);
    14         test.show3();
    15     }
    16 }
    17 
    18 // 定义一个测试类
    19 class Test {
    20     // 成员变量
    21 //    int i;        // 成员变量只做声明不做赋值,语法上OK
    22     int i = 2;    // 成员变量声明时同时进行赋值,语法上OK
    23     // 在成员变量中也声明并赋值一个变量j
    24     int j = 3;
    25     
    26     // 成员方法
    27     public void show1() {
    28 //        System.out.println(i);        // 在成员方法中访问成员变量i,是可以访问的
    29 
    30         // 语法错误:j cannot be resolved to a variable  不声明就直接使用变量j,是无法使用的
    31 //        System.out.println(j);
    32         
    33         // 在方法中声明并赋值了变量j,这里的j是什么变量?            答:局部变量
    34         int j = 5;
    35         // 语法错误:The local variable j may not have been initialized        只声明不赋值,提示未初始化
    36 //        int j;
    37         System.out.println("方法内的变量j:" + j);
    38     }
    39     
    40     public void show2(int j) {
    41         System.out.println("方法内的变量j:" + j);    // 变量j写在方法的形参位置,它既是形参,也是局部变量
    42         // 局部变量的作用域(作用范围)就是从其变量声明的地方开始,到其所在方法的右侧大括号结束
    43     }
    44     
    45     public void show3() {
    46         // 当前方法中没有该变量名的局部变量的声明,同时又没有该变量名的成员变量的声明,直接使用该变量名,有语法错误
    47         // 语法错误:j cannot be resolved to a variable  不声明就直接使用变量j,是无法使用的
    48         // 当前方法中没有该变量名的局部变量的声明,同时有该变量名的成员变量的声明,直接使用该变量名,没有语法错误
    49         System.out.println(j);
    50         // 这里直接使用了作为成员变量j的值,也就是说在方法中,如果没有同名的局部变量j,使用变量j时,就会到成员变量中找是否有j
    51         
    52         // 疑问:
    53         // 1、show3方法中没有定义j变量,为何没有去上面的方法show1 和 show2中去找?
    54         // 答:从局部变量的作用域来看,局部变量只能在其所在方法中使用的,超出了这个范围就无法使用了
    55         // 2、Test类中有成员变量j,show1方法 和 show2方法中又有局部变量j,调用方法时,为何显示的还是局部变量j的值?
    56         // 答:变量的调用原则:就近原则
    57     }
    58 }
    59 /*
    60  * 成员变量    和    局部变量的区别:
    61  * 1、代码位置上的区别:
    62  * A、局部变量:在方法中或是在方法的形参中定义的
    63  * B、成员变量:在类中且在方法外定义的
    64  * 
    65  * 2、内存中位置的区别:
    66  * A、局部变量:存储在栈上(方法调用时,会将方法压入栈中;方法调用结束后,会将方法从栈中弹出)
    67  * B、成员变量:存储在堆中
    68  * 
    69  * 3、生命周期上的区别:
    70  * A、局部变量:跟着方法来的,方法被调用,方法被压入栈中,局部变量产生了;方法调用结束后,方法从栈中弹出,局部变量也就销毁了
    71  * B、成员变量:随着对象的创建而创建,随着对象的消亡而消亡
    72  * 
    73  * 4、初始值上的区别:
    74  * A、局部变量:需要被初始化才可以使用,换句话说就是没有默认值
    75  * B、成员变量:有默认值,可以不用初始化就拿着默认值使用
    76  */
  • 相关阅读:
    Hello world
    Kubernetes容器云平台建设实践
    工作方法决定自己的发展
    Excel中对身份证号的处理
    详解慢查询日志的相关设置及mysqldumpslow工具
    安全测试工具简介
    Redis使用
    linux centos 查看防火墙firewalld、iptables状态
    悄悄地存在这里,因为里面的一句话
    GAE Python 2009322
  • 原文地址:https://www.cnblogs.com/iflytek/p/6528200.html
Copyright © 2020-2023  润新知