2.Java面向对象(上篇)

  • 目录

    1.类的组成

    2.对象的使用

    3.多个对象内存图

    4.成员变量与局部变量

    5.面向对象三大特性—封装

    6.键盘录入笔记

    7.常用API—String

    8.ArrayList

  • 1.类的组成

    • 类就是对现实事物的一种描述
    • 属性:在类中通过成员变量来体现(类中方法外的变量)
    • 构造方法
      • 作用:初始化类的对象,并返回对象地址
      • 两种构造:有参构造,无参构造。(方法的重载)
      • 注意事项:默认自带无参构造,若只定义了有参构造,无参构造就没有了,构造方法名字与类相同
    • 普通方法
  • 2.对象的使用

    • 创建对象的格式:
      • 类名 对象名 = new 类名();
    • 调用成员的格式:
      • 对象名.成员变量
      • 对象名.成员方法();
  • 3.多个对象内存图

    • 方法区:
    • 栈内存:
    • 堆内存:
    • 成员变量使用过程

    • 成员方法调用过程

    • 总结:多个对象在堆内存中,都有不同的内存划分,成员变量存储在各自的内存区域中,成员方法多个对象共用的一份
  • 4.成员变量与局部变量

    • 主要区别

  • 5.面向对象三大特性—封装

    • 对象代表什么,就得封装对应的数据,并提供数据对应的行为
    • 5.1封装要求
      • 一般建议对成员变量使用private(私有、隐藏)关键字修饰(private修饰的成员只能在当前类中访问)
      • 为每个成员变量提供配套public修饰的getter、setter方法暴露其取值和赋值
    • 5.2this关键字
      • 可以出现在构造器,方法中
      • 代表当前调用者的地址(用于区别成员变量与局部变量)
        public Commodity(String name, double price) {
        **this.name** = name; //用于给属性赋值
        <u>**this.price**</u> = price;
        }
    • 5.3标准JavaBean
      • 成员变量使用private修饰
      • 提供成员变量对应的setXxx()、getXxx()方法
      • 需提供一个无参构造器,带全部参数的构造器
  • 6.键盘录入笔记

    • Scanner sc = new Scanner(System.in);
    • 6.1录入格式
        • next()、nextLine()、nextInt()、nextDouble()
    • 6.2底层细节
      • next(),nextInt(),nextDouble()在接收数据的时候,会遇到空格,回车,制表符其中一个就会停止接收数据。但是这些符号 + 后面的数据还在内存中并没有接收。如果后面还有其他键盘录入的方法,会自动将这些数据接收。
      • nextLine()方法是把一整行全部接收完毕。
    • 6.3两套键盘录入方法
      • next()、nextInt()、nextDouble()这三个配套使用。
      • nextLine()单独使用。
        如果想要整数,那么先接收,再使用Integer.parseInt进行类型转换。
  • 7.常用API—String

    • 来自包java.lang.String,java使用的时候不需要导包
    • 7.1String类的构造方法
      • 常用的构造方法

    • 7.2创建字符串对象的两种方式的区别
      • 通过构造方法创建:
        • 通过 new 创建的字符串对象,每一次 new 都会申请一个内存空间,虽然内容相同,但是地址值不同
      • 直接赋值方式创建:
        • 以“”方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM 都只会建立一个 String 对象,并在字符串池中维护
    • 7.3字符串的比较
      • 比较基本数据类型:比较的是具体的值
      • 比较引用数据类型:比较的是对象地址值
      • equals方法的作用:public boolean equals(String s) 比较两个字符串内容是否相同、区分大小写

      • char c = str.charAt(i);//可以根据索引i取得字符串str中的字符
      • str.length();//获取字符串的长度
    • 7.4StringBuilder
      StringBuilder 可以看成是一个容器,创建之后里面的内容是可变的。
      • 创建对象:StringBuilder sb = new StringBuilder("abc")
      • 添加元素与链式编程:sb.append(1).sb.append(2.3).sb.append(true);
      • 反转:sb.reverse();
      • 获取长度:int len = sb.length();
      • 打印与普及: System.out.println(sb);
      • //因为StringBuilder是Java已经写好的类
      • //java在底层对他做了一些特殊处理。
      • //打印对象不是地址值而是属性值
    • 7.5StringJoiner
      StringJoiner跟StringBuilder一样,也可以看成是一个容器,创建之后里面的内容是可变的。
      作用:提高字符串的操作效率,而且代码编写特别简洁,但是目前市场上很少有人用。
      JDK8出现的
      • 创建对象:StringJoiner sj = new StringJoiner("---");
      • 添加元素:sj.add("aaa").add("bbb").add("ccc");
      • 获取长度:int len = sj.length();
      • 打印: System.out.println(sj);
    • 7.6String常用的API
      • String常用API

    • 7.7字符串的小扩展
      • 来自包java.lang.String,java使用的时候不需要导包
      • 字符串存储的内存原理:
        • String s = “abc”;直接赋值
          • 特点:此时字符串abc是存在字符串常量池中的。
          • 先检查字符串常量池中有没有字符串abc,如果有,不会创建新的,而是直接复用。如果没有abc,才会创建一个新的。
          • 所以,直接赋值的方式,代码简单,而且节约内存。
        • new出来的字符串
          • 看到new关键字,一定是在堆里面开辟了一个小空间。
        • new与直接赋值对比
          • String s1 = new String(“abc”);
          • String s2 = “abc”;
          • s1记录的是new出来的,在堆里面的地址值。
          • s2是直接赋值的,所以记录的是字符串常量池中的地址值。
      • ==号比较的到底是什么?
        • 如果比较的是基本数据类型:比的是具体的数值是否相等。
        • 如果比较的是引用数据类型:比的是地址值是否相等。
        • 结论:==只能用于比较基本数据类型。不能比较引用数据类型。
  • 8.ArrayList

    • 集合是与数据组类似,也是一种容器,用于装数据的
    • 定义:ArrayList<N> list = new ArrayList(); //注意N是泛型可以写也可以不写(用来固定某种数据类型),并且只能填写引用数据类型
    • 数组的特点:定义完成后,类型确定,长度固定
    • 集合的特点:大小不固定,启动后可以动态变化,类型也可以选择不固定

    • 成员方法:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zd08

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值