day11_自我总结

一、回顾

1.租车系统
2.抽象方法
   概念:只有方法是声明 没有方法体使用abstract来进行修饰
   语法: 访问修饰符 abstract  返回值类型  方法名称(参数列表)
   说明:抽象方法必须在抽象类型中
3.抽象类
   语法:访问修饰符 abstract  class 类名{}
   成员: 成员变量 
        构造方法
        方法:成员方法 静态方法  抽象方法
   说明:
      A.抽象类是不可以实例化对象
      B.抽象类中构造方法用于给子类来进行调用
      C.抽象类中可以有抽象方法 还可以有其它方法  但是抽象方法必须在抽象类中
      D.抽象类一般用于作为父类 抽象类的子类 必须实现抽象类中的所有的抽象方法(子类也是抽象类)
 4.接口
    语法: 访问修饰符  interface 接口名称{}
    成员:
       A.接口中的变量 都是静态的常量 默认都是使用 public  static    final 来进行修饰
       B.方法:
           a.在jdk1.8之前 接口只能有抽象方法
           b.在jdk1.8之后 接口可以有 默认方法 静态方法 抽象方法 
             在jdk1.9之后 接口可以有私有方法
 5.实现:
     分类: 单实现与多实现
     原则: 必须实现接口中所有的抽象方法
 6.类与接口 接口与接口 类与类
   类与类: 单继承 多层继承  不能多继承
   接口与类: 单实现 多实现
   接口与接口: 单继承 多继承 多层继承
 7.代码块:
    局部代码块  构造代码块  静态代码块(重点)
  

二、内部类

成员内部类:普通成员内部类、私有成员内部类、静态内部类

//普通的成员内部类
    位置:定义在类中 方法外
    语法:
      访问修饰符 class 外部类名 {
          访问修饰符  class 内部类名{
            
          } 
      }
    说明:
       A.内部类可以访问外部类的资源(包括私有的资源)
       B.外部类访问内部类的资源 必须实例化对象之后  通过对象名来进行访问
       C.外部类以外的类可以访问内部类的资源 
         语法: 外类类.内部类  对象名 = new 外部类().new 内部类()
         例子:OutClass.Inner  in  = new OutClass().new Inner();

//私有的成员内部类
   位置:定义在类中 方法外
   语法: 
     访问修饰符 class 外部类名 {
          private class 内部类名{
            
          } 
      }
   说明:
       A.内部类可以访问外部类的资源(包括私有的资源)
       B.外部类访问内部类的资源 必须实例化对象之后  通过对象名来进行访问
       C.外部类以外的类不可以访问内部类的资源

//静态内部类
    位置: 定义在类中 方法外
    语法:
      访问修饰符 class 外部类名 {
        static  class 内部类名{
            
        }
        
      }
    说明:
      A.静态内部类只能访问外部类的静态的资源
      B.外部类访问内部类的资源
         a.如果访问是非静态是资源  需要实例化对象之后 通过对象名访问
         b.如果访问是静态资源 直接通过类名来访问
      C.外部类以外类是可以访问内部类的资源
        语法: 外部类.内部类 对象名  = new  外部类.内部类()
        例子:  OutClass.Inner in  = new OutClass.Inner();

局部内部类

​ 定义在方法中的内部类

//局部内部类
       位置:定义方法中
       语法:
         访问修饰符  返回值类型  方法名称(){
              class 内部类名{
                 
              }
         }
       C.说明:
          局部内部类 外部类只能间接访问其资源

匿名内部类

​ 没有名称的内部类

//匿名内部类
     概念: 没有名称内部类
     前提:实例化接口(实现类) 或者是抽象类(子类)   

三、jar管理(重点)

项目打包的原因:

​ 想调用其他项目资源的时候,得导入该项目的包,于是乎项目打包出现,,方便于调用(被打包项目的)资源

(详细操作流程见备忘录"包含打包jar、使用jar、删除jar(包含删除依赖和删除jar)")

四、API

简介
​	概念:API 应用程序接口编程  主要就是提供查看jdk相关资源的文档	
作用

​	A.jdk中提供了一些常用的方法以及类 以及接口的使用

​	B.使用帮助文档来快速查找jdk提供相关的资源 提供开发的效率
使用:(点击JDK_API_1_6_zhCN.CHM)
使用说明

​	A.查看类的描述
​	B.查看类的构造方法
​	C.查看成员方法以及静态方法 
​        参数列表   返回值类型   方法描述
文档注释-注解

​	@author  作者
​	@version 版本
​	@since 说明
​	@param 参数
​	@return 返回值
生成帮助文档

​	编码格式:zh_CN

​           -encoding UTF-8 -charset UTF-8

五、Object(重点)

5.1简介

1.概念: 类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法
       Object 是所有类的直接父类 或者是间接父类
2.构造方法
     public Object()
3.作用:
   A.用于来实例化对象
   B.用于给子类来进行调用

5.2 toString() 方法

1.public String toString()  返回该对象的字符串表示
  getClass().getName() + '@' + Integer.toHexString(hashCode())
2.返回字符串解释
     getClass().getName()==> 返回值是完整包名加上类名
     @==>表示一个连接符号 没有特殊的含义
     hashCode() 表示是hashcode值
     Integer.toHexString()==>表示以十六进制形式来表示
3.toString() 返回的是对象的地址值 没有实际的意义 所有需要重写
4.重写的规则: 返回对象的属性值
5.快捷键 alt+insert
6.自定义对象中 重写toString() 打印对象的名称  默认会调用toString()方法

5.3 equals() 方法

1.方法:public boolean equals(Object obj) 指示其他某个对象是否与此对象“相等”。
2.解释: 
   对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true 
   两个对象的地址值是一样才返回true  两个指引 执行同一个堆的内存的地址
3.equals() 默认比较的是两个对象的地址值 没有实际的意义 所有需要进行重写
4.重写的规则:比较对象的属性值是否相同
5.快捷键:alt +insert
6.==与 比较equals()
   相同点: 都可以用于来比较是否相等
   不同点:
     A.==既可以比较基本数据类型 也可以比较引用数据类型  equals() 只能比较引用数据类型
     B.==比较基本数据类型 比较的数值是否相同   比较引用数据类型 比较的是地址值是否相等
       equals()没有重写之前 比较的对象的地址值是否相同  重写之后 比较的是对象的属性值是否相同

六、String(重点)

6.1简介

1.String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现
2.字符串是常量 使用final来进行修饰   不能改变是地址值  可以改变的是对象的内容
3. String 对象是不可变的,所以可以共享
4.字符串字符值是存在堆内存中字符串常量吃  new  String() 是存在 堆内存中
5.字符串的底层是使用字节数组来进行存储

6.2 字符串构造方法 3+1

构造方法名称 构造方法的描述
String s ="abc" 字面值底层也会执行字符串的构造方法
public String() 初始化一个新创建的 String 对象
public String(byte[] bytes) 将字节数组构成成一个字符串
public String(byte[] bytes, int offset, int length) 将字节数组指定的长度内容构建成一个字符串
public String(char[] value) 将字符数组构建成一个新的字符串
public String(char[] value, int offset, int count) 将字符数组指定的长度内容构建成一个字符串
package com.zhenglyz.day11.test2;

public class Test2 {
    public static void main(String[] args) {
        //字符串字面值
        String s="abc";
        System.out.println("s = " + s);
        //实例化一个空的字符串对象
        String s1=new String();
        System.out.println("s1 = " + s1);
        //将字节数组构建成一个字符串
        byte[] bytes1={97,98,99};
        String s2=new String(bytes1);
        System.out.println("s2 = " + s2);
        //将字节数组指定的长度内容构建成一个字符串
        byte[] bytes2={97,98,99};
        String s3 =new String(bytes2,0,2);
        System.out.println("s3 = " + s3);

        //将字符数组构建成一个新的字符串
        char[] chars1={'a','b','c'};
        String s4=new String(chars1);
        System.out.println("s4 = " + s4);
        //将字符数组指定的长度构建成一个字符串
        char[] chars2={'a','b','c'};
        String s5=new String(chars2,0,2);
        System.out.println("s5 = " + s5);
    }
}

6.3 字符常用的方法-判断性

方法的名称 方法的描述
public boolean contains(CharSequence s) 判断字符串中是否包含此字符
public boolean equals(Object anObject) 用于判断两个字符串内容是否相同
public boolean startsWith(String prefix) 此字符串是否以指定的前缀开始
public boolean endsWith(String suffix) 此字符串是否以指定的后缀结束
public boolean isEmpty() 当且仅当 length() 为 0 时返回 true
public int length() 返回此字符串的长度
public boolean equalsIgnoreCase(String anotherString) 将此 String 与另一个 String 比较,不考虑大小写
package com.qf.test15;

public class Test02 {
    public static void main(String[] args) {
        //判断字符串是否包含篮球
        System.out.println("蔡徐坤打篮球贼厉害".contains("篮球"));
        System.out.println("蔡徐坤打篮球贼厉害".contains("吴亦凡"));
        System.out.println("吴某某被都某某举报".startsWith("吴某某"));
        System.out.println("吴某某被都某某举报".startsWith("罗志祥"));

        System.out.println("吴某某被都某某举报".endsWith("举报"));
        System.out.println("吴某某被都某某举报".endsWith("阿飞"));
        System.out.println("abc".equalsIgnoreCase("ABc"));
        System.out.println("abc".equalsIgnoreCase("Adc"));
        System.out.println("   ".length());
        System.out.println("".length());
        System.out.println("".isEmpty());
        System.out.println("吴亦凡".isEmpty());

    }
}

6.4 案例

step01需求

​	键盘录入一个邮箱地址  判断优先是否合法  以com结尾  包含@ 符号   键盘一个图片的名称判断图片是否合法

step02 分析

​	A.实例化Scanner
​	B.使用字符串方法
endsWith() contains()
​	C.使用选择结构判断是否正确
//step03 代码
package com.zhenglyz.day11.test3;

import java.util.Scanner;

public class Test3 {
    public static void main(String[] args) {
        //实例化Scanner
        Scanner input = new Scanner(System.in);
        System.out.println("请输入邮箱地址");
        String email = input.next();
        if (email.contains("@") && email.contains("com")) {
            System.out.println("邮箱输入正确");
        } else {
            System.out.println("邮箱输入错误");
        }

        System.out.println("请输入图片名称");
        String fileName = input.next();
        if (fileName.endsWith("jpg") || fileName.endsWith("png") ||
                fileName.endsWith("gif") || fileName.endsWith("jpeg")) {
            System.out.println("图片输入正确");
            System.out.println(fileName.length());
        } else {
            System.out.println("图片输入错误");
            System.out.println(fileName.length());
            System.out.println(fileName.isEmpty());
        }

        input.close();
    }
}

6.5 字符串常用的方法-得到性

方法的名称 方法的描述
public char charAt(int index) 返回指定索引处的 char 值
public int indexOf(String str) 返回指定子字符串在此字符串中第一次出现处的索引(从前往后进行查找)
public int lastIndexOf(String str) 返回指定子字符串在此字符串中第一次出现处的索引(从后往前进行查找)
public String substring(int beginIndex, int endIndex) 截取指定的字符串(包头不包尾)
//代码
package com.qf.test15;

public class Test04 {
    public static void main(String[] args) {
        String   s1 ="聪哥与网红小姐姐约会";
        char c = s1.charAt(0);
        System.out.println(c);
        char c1 = s1.charAt(4);
        System.out.println(c1);
        String s2="阿飞找了打篮球阿飞找到女朋友";
        System.out.println(s2.indexOf("阿"));
        System.out.println(s2.lastIndexOf("阿"));
        String s3 = s2.substring(4,7);
        System.out.println(s3);
        String s4=  s2.substring(4);
        System.out.println(s4);


    }
}

6.6 案例

step01 需求

​	键盘录入一串字符  通过a这个字符出现的次数  

step02 分析

​	A.将字符串拆分一个字符数组
​		substring()
​	B.使用循环遍历 与字符a进行对比
​	C.定义一个变量 统计其次数
//step03 代码
package com.qf.test15;

import java.util.Scanner;

public class Test05 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一串字符");
        String line = input.next();
        //定义一个字符数组
        char[] arrays = new char[line.length()];
        //使用循环遍历 给字符数组赋值
        for (int i = 0; i < arrays.length; i++) {
            arrays[i] = line.charAt(i);
        }
        //定义一个变量记录
        int count = 0;
        //使用循环遍历数组
        for (int i = 0; i < arrays.length; i++) {
            if (arrays[i] == 'a') {
                count++;
            }
        }

        System.out.println(count);
    }
}

6.7 案例

step01 需求

​	键盘录入一个银行卡的余额  123456789 将字符处理后的结果: 123,456,789

step02 分析

​	A.实例化Scanner
​	B.将字符串拆分到每一个字符串数组中
​	C.使用循环从后往前遍历(倒着遍历)
​	    i % 3  ==0   i !=0  拼接逗号
​	    其它情况直接拼接 数据  
//step03 代码
package com.zhenglyz.day11.test5;

import java.util.Arrays;
import java.util.Scanner;

public class Test5 {
    public static void main(String[] args) {
        //实例化Scanner
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一串字符");
        String line = input.next();
        String[] arrays = new String[line.length()];
        for (int i = 0; i < arrays.length; i++) {
            //加一个""的目的是为了是的转换后,类型从char变为String
            arrays[i] = (line.charAt(i) + "");
        }
        //查看是否有存储到自定义类的数组内
        System.out.println(Arrays.toString(arrays));

        //定义一个应用类型的str来接收
        String str = "";

        //使用循环遍历数组
        for (int i = arrays.length - 1; i >= 0; i--) {
            if (i % 3 == 0 && i != 0) {
                str += arrays[arrays.length - 1 - i] + ",";
            } else {
                str += arrays[arrays.length - 1 - i];
            }
        }
        System.out.println(str);
    }
}
posted @ 2022-07-25 19:40  真lyz  阅读(29)  评论(0)    收藏  举报