专栏首页五角钱的程序员Java基础知识笔记五(详细)(1024即将到来,那就文末留言送书吧)

Java基础知识笔记五(详细)(1024即将到来,那就文末留言送书吧)

图丨pixabay

文末留言赠书

作者:追梦

地址:http://m6z.cn/6kSuCd

一 思想概述

1.1面向过程

1,因为面向对象思想是基于面向过程思想。回想一下之前,在做一些练习的时候,我首先得清楚,我需要做什么操作,然后在一步步分析要怎么做,最后用代码实现。需要面对每一个步骤和过程。

2,面向过程的代表语言:C语言

1.2面向对象

1,当需求单一或者简单时,我们一步一步的做是ok的,并且效率也挺高。但是随着需求的更改,功能的增多,发现需要面对每一个步骤就变得有些麻烦和繁琐了。所以我们要思索,能不能把这些步骤和功能在进行封装在一个类中,封装时根据不同的功能,进行不同的封装,同时功能类似的封装在一起。这就是面向对象思想。

2,面向对象的代表语言: Java语言

二 两者的区别

1,通过一个案例看看它们的区别。 在控制台打印的数组格式为:[元素1,元素2,元素3,元素4,元素5….]

面向过程思想做法

public static void main(String[] args) {
    //创建数组
    int[] arr = {1,2,3,4,5};
    //调用方法
    printArr(arr);
}
public static void printArr(int[] arr){
    System.out.print("[");
    for (int i = 0; i < arr.length; i++) {
        if(arr.length-1 == i){
            System.out.println(arr[i]+"]");
        }else{
            System.out.print(arr[i]+",");
        }
    }
}

面向对象思想做法

public static void main(String[] args) {
      //创建数组
      int[] arr = {1,2,3,4,5};
      //调用方法
      printArr(arr);
  }
public static void printArr(int[] arr){
    //借助了一个java中提供的对象
    System.out.println(Arrays.toString(arr));
}

2,总结: 面向过程强调的是每一个环节每一个步骤都需要自己去完成,比较复杂。 面向对象是根据Java中的一些类创建对象,让对象去帮我们调用方法完成,比较简单,

3,面向对象也有三个特征,即封装继承多态。

三 类与对象

1,什么是类 类是一组属性和行为的集合,我们可以当做是某一类事物的模板,从而使用该事物模板的属性和行为来描述这一类事物。

2,现实中如何描述一类事物 (1)属性:就是该事物的状态信息 (2)行为:就是该事物能够做什么

3,举例:鳄鱼 属性:名字,颜色,体重,年龄 行为:爬,吃,睡

4,什么是对象 对象是一类事物的具体体现。对象是类的一个实例,那么对象就必须具备该类事物的属性和行为。

5,现实中如何描述一个对象 举例:鳄鱼1号 属性:小黑,黑色,18kg,2岁 行为:慢慢爬,吃肉,睁眼睡

6,类与对象的关系 类是对一类事物的描述,是抽象的。 对象是一类事物的实例,是具体的。 类是对象的模板,对象是类的实体。

四 类的定义

1,现实世界的事物 (1)属性: 事物的描述信息 (2)行为: 事物能做什么

2.定义类其实就是定义类的成员 (1) 成员变量: 就是事物的属性 (2)成员方法: 就是事物的行为

五 类与对象的案例

1,学生类

public class Student {
   String name;//姓名
   int age;  //年龄
   public void study(){    //学习
       System.out.println("学生正在学习Java");
   }
    public void eat(){   //吃饭
        System.out.println("吃鸡腿");
    }
}

2,使用 创建对象:类名 对象名 = new 类名(); 对象名.成员变量,对象名.成员方法

public class DemoStudent {
    public static void main(String[] args) {
        Student stu = new Student(); //创建学生类的对象
        System.out.println(stu);//地址值
        System.out.println("-----------------");
        //使用成员变量
        System.out.println("姓名:"+stu.name);//null
        System.out.println("年龄:"+stu.age);//0
        //给成员变量重新赋值
        stu.name = "小明";
        stu.age = 18;
        System.out.println("-----------------");
        //再次使用成员变量
        System.out.println("姓名:"+stu.name);//小明
        System.out.println("年龄:"+stu.age);//18
        //使用成员方法
        stu.study();
        stu.eat();
    }
}

六 对象内存图

public class Phone {
    String brand;
    double price;
    String color;
    public void call(String name){
        System.out.println("给"+name+"打电话");
    }
    public void send(){
        System.out.println("给小明发短信");
     }
}

1,一个对象的内存图

package com.baidu.demo;
public class DemoPhone {
    public static void main(String[] args) {
        Phone p = new Phone();
        System.out.println(p.brand);
        System.out.println(p.price);
        System.out.println(p.color);
        p.brand = "vivo";
        p.color = "黑色";
        p.price = 2299;
        System.out.println(p.brand);
        System.out.println(p.price);
        System.out.println(p.color);
        p.call("小明");
        p.send();
    }
}

一个对象的基本初始化过程

2,二个对象的内存图

package com.baidu.demo;
public class DemoPhone {
    public static void main(String[] args) {
        Phone p1 = new Phone();
        p1.brand = "华为";
        p1.price = 5000.0;
        p1.color = "金色";
        System.out.println("p1的品牌:"+p1.brand);
        System.out.println("p1的价格:"+p1.price);
        System.out.println("p1的颜色:"+p1.color);
        p1.call("李明");
        p1.send();
        System.out.println("=========");
        Phone p2 = new Phone();
        p2.brand = "魅族";
        p2.price = 6000.0;
        p2.color = "黑色";
        System.out.println("p2的品牌:"+p2.brand);
        System.out.println("p2的价格:"+p2.price);
        System.out.println("p2的颜色:"+p2.color);
        p2.call("小红");
        p2.send();
    }
}

方法的共用

3,二个对象的内存图

package com.baidu.demo;
public class DemoPhone {
    public static void main(String[] args) {
        Phone p1 = new Phone();
        p1.brand = "vivo";
        p1.price = 2299.0;
        p1.color = "黑色";
        System.out.println("p1的品牌:"+p1.brand);
        System.out.println("p1的价格:"+p1.price);
        System.out.println("p1的颜色:"+p1.color);
        Phone p2 = p1;
        p2.brand = "VIVO";
        p2.price = 1799.0;
        p2.color = "白色";
        System.out.println("p2的品牌:"+p2.brand);
        System.out.println("p2的价格:"+p2.price);
        System.out.println("p2的颜色:"+p2.color);
        System.out.println("p1的品牌:"+p1.brand);
        System.out.println("p1的价格:"+p1.price);
        System.out.println("p1的颜色:"+p1.color);
    }
}

两个引用指向同一个对象

七 成员变量和局部变量的区别

1,在类中的位置不同 成员变量:类中方法外. 局部变量:方法内或者方法声明上

2,在内存中的位置不同 成员变量:堆内存 局部变量;栈内存

3,生命周期不同 成员变量:随着对象的存在而存在,随着对象的消失而消失 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

4,初始化值不同 成员变量:有默认的初始化值 局部变量:没有默认的初始化值,必须先定义,赋值,才能使用。

八 private关键字

1,private关键字:是一个权限修饰符。可以修饰成员(成员变量和成员方法) 被private修饰的成员只在本类中才能访问。

2.private最常见的应用:把成员变量用private修饰, 提供对应的getXxx()/setXxx()方法

3,案例的使用 通过对象访问成员变量,会存在数据不安全的问题。 我们应该想想能不能让用户对象其赋值的时候有一些限制。 private关键字,实现限定 private:是一个修饰符,可以修饰成员变量,也可以修饰成员方法 如果成员变量或成员 方法被private修饰,那么只能在本类中访问 针对private修饰的成员变量,外界如果想要访问,我们必须在类中提供对应getXxx() setXxx()一组方法,方法必须是public

public class Student {
    private String name;
    private int age;
    public void show(){
        System.out.println("姓名是:"+name+"年龄是:"+age);
        //eat();
    }
    /* private void eat(){
        System.out.println("吃肉肉..");
    }*/
    public void setName(String n){
        name = n;
    }
    public String getName(){
        return name;
    }
    public void setAge(int a){
        if(a > 100 || a < 0){
            System.out.println("年龄不合法!!!");
        }else{
            age = a;
        }
    }
    public int getAge(){
        return age;
    }
}

学生的测试类

public class DemoStudent {
    public static void main(String[] args) {
        //创建学生对象
        Student stu = new Student();
        stu.show();
        //对成员变量进行赋值
        stu.setName("小明");
        stu.setAge(18);
        stu.show();
        //也可以单独使用get方法获取成员变量的值
        System.out.println(stu.getName());
    }
}

如果喜欢本文

欢迎 在看留言分享至朋友圈 三连

作者:BossXiang,可爱且懂得生活的研究生一枚(码农一枚)。

"一起学习、成长、温情的热爱生活。"

私人微信|

CSDN|知乎|github|掘金:五角钱的程序员

关注福利

关注公众号,后台回复【电子书】

几百本常用技术类电子书籍

五角钱的程序员

希望这篇文章可以帮到你~

欢迎大家点个在看,分享至朋友圈

你我都成为光发热之人,在看在看在看~(疯狂暗示!)

本文分享自微信公众号 - 五角钱的程序员(xianglin965),作者:追梦

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-10-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • (建议收藏)Java基础知识笔记(详细)

    IDEA是一个专门针对Java的集成开发工具(IDE),由Java语言编写。所以,需要有JRE运行环境并配置好环境变量。它可以极大地提升我们的开发效率。可以自动...

    用户7656790
  • 猜生日 Java小游戏

    询问朋友5个问题,找到他出生在一个月的哪一天。每个问题都是询问他的生日是否是5个数字集合中的一个。

    用户7656790
  • Java基础知识笔记四(详细)

    在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。

    用户7656790
  • Spring Boot的过滤器

    其中1代表是微服务启动类,2代表在启动类下面构建一个包,再在堡垒新建一个过滤器类,并且实现 Filter 接口

    breezedancer
  • java中的数学工具类Math

    java.util.Math类是数学相关的工具类,里面提供了大量的静态方法,完成与数学运算相关的操作。

    崔笑颜
  • 004.多线程-线程的三种创建方式

    当前主流的就是面向接口开发, 因为实现了接口后还可以根据业务需要再继承其他的类。 实现Runnable接库与实现Callable接口对比来看, Calla...

    qubianzhong
  • Java基础-day08-超市购物系统总结

    Java基础-day08-超市购物系统总结 超市购物小票——自定义类 1案例介绍与演示 将超市购物小票案例中零散数据(名称、货号、单价、计价单位等)封装为货物对...

    Java帮帮
  • ASpectJ对AOP的实现

    切入点表达式 ? ? 基于注解 1 @Aspect // 表示当前类切面 2 public class MyAspect { 3 4 @Bef...

    用户1216491
  • 《Java从入门到放弃》JavaSE入门篇:练习——单身狗租赁系统

    我们把之前使用数组做的这个单身狗系统改版成数据库版本,并且使用面向对象里面的一些简单思想。

    十方上下
  • 《Java从入门到放弃》JavaSE入门篇:练习——单身狗租赁系统

    十方上下

扫码关注云+社区

领取腾讯云代金券