IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> java学习笔记第三周(一) -> 正文阅读

[Java知识库]java学习笔记第三周(一)

目录

一、抽象类和接口

1、抽象方法和抽象类

2、接口interface(重点)

2.1接口的作用

2.2如何定义和使用接口(jdk8以前)

2.3接口中定义静态方法和默认方法(jdk8以后)

2.4接口的多继承

二、字符串String类详解

1、String基础?

2、字符串判断相等

3、String类常用方法(要掌握)

二、内部类

1、内部类?

1.1非静态内部类

1.2静态内部类

1.3匿名内部类


?

一、抽象类和接口

1、抽象方法和抽象类

抽象方法:使用abstract修饰的方法,没有方法体,只有声明(public void s();? 没有{})。定义的是一种“规范”,就是告诉子类必须要给抽象方法提供具体的实现。

抽象类:包含抽象方法的类就是抽象类。通过abstract方法定义规范,然后要求子类必须定义具体实现。通过抽象类,我们就可以做到严格限制子类的设计,使子类之间更加通用。

package studyweek3;
//抽象类
abstract class Animal{
    abstract public void shout();
}
class Dog extends Animal{
    //子类必须实现父类的抽象方法,否则编译错误
    public void shout(){
        System.out.println("汪");
    }
    public void seeDoor(){
        System.out.println("看门中");
    }
}
//测试抽象类
public class study1 {
    public static void main(String[] args) {
        //Animal a=new Animal();//抽象类不能实例化,因此不能new对象。
        /*Animal b=new Dog();
        b.shout(); 正确,可以用向上转型new一个对象*/
        Dog a=new Dog();
        /*Animal c=new Dog();
        //c.seeDoor();//错误,编译的时候使用Animal类,而Animal类里面没有seeDoor方法,因此编译无法通过
        a.shout();
        a.seeDoor();
    }
}

抽象类使用要点:

2、接口interface(重点)

2.1接口的作用

为什么需要接口?接口和抽象类的区别?

区别:

普通类:具体实现

抽象类:具体实现,规范(抽象方法)

接口:规范

2.2如何定义和使用接口(jdk8以前)

声明格式:

[访问修饰符] interface 接口名? []? {

常量定义;//总是public static final修饰,不写也是。

方法定义;//总是public abstract

}

?接口举例:

package studyweek3;
//接口(一般要带上大量注释)

//这是一个飞行的接口
public interface interface2 {
    /*飞行距离*/
    public static final int a=100;
    /*飞行方法*/
    void fly();
    /*停止方法*/
    void stop();
}



package studyweek3;

public class study2 implements interface2{
    @Override
    public void fly(){
        System.out.println("飞");
    }
    @Override
    public void stop(){
        System.out.println("停");
    }

    public static void main(String[] args) {
        study2 a1=new study2();
        a1.fly();
        a1.stop();
    }

}

传参时直接传入接口进行调用,实现方便管理。

2.3接口中定义静态方法和默认方法(jdk8以后)

默认方法:

interface A{
    default void moren(){
        System.out.println("接口中的默认方法")            
    }
}

静态方法:

public class Test{
    public static void main(String[] args){
    }
}

interface A{
public static void st(){
        System.out.println("a的静态方法");
    }
}
class test_a implements A{
    public static void st(){
        System.out.println("test_a的静态方法");
    }
}

2.4接口的多继承

接口可以支持多继承。

语法:

interface A extends b,c;

extends只能单继承,而使用接口可以实现多继承?

二、字符串String类详解

1、String基础?

2、字符串判断相等

package studyweek3;
//String类详解
public class study3 {
    public static void main(String[] args) {
        String str1=new String("abcde");
        String str2="abcde";
        System.out.println(str1==str2);//"abcde"存在常量区,str1指向new的对象的地址,而对象的地址再指向常量区地址吗,str2直接指向常量区里的“abcde”的地址
        System.out.println(str1.equals(str2));
    }
}

?因此,再涉及到字符串比较的时候,都使用equals方法。

str1.equals(str2);

3、String类常用方法(要掌握)

?

package studyweek3;

import java.util.Locale;

//String类详解
public class study3 {
    public static void main(String[] args) {
        String str1=new String("abcde");
        String str2="abcde";
        String str3="abcdE";
        String str4="abc";

        System.out.println(str1==str2);//"abcde"存在常量区,str1指向new的对象的地址,而对象的地址再指向常量区地址吗,str2直接指向常量区里的“abcde”的地址
        System.out.println(str1.equals(str2));

        //String练习
        System.out.println(str1.length());//返回字符串长度
        System.out.println(str2.charAt(0));//返回第0个字符
        System.out.println(str2.charAt(4));//返回第6个字符。str2.length()-1;

        System.out.println(str2.equals(str3));//false
        System.out.println(str2.equalsIgnoreCase(str3));//true忽略大写

        System.out.println(str2.indexOf(str4));//从头开始查找子串,返回第一个子串的首字母的下标 0
        System.out.println("Aabcdefabca".indexOf("abc"));//1
        System.out.println("abc".indexOf("A"));//未找到则返回-1

        System.out.println("Aabcdefabca".lastIndexOf("abc"));//从末尾开始查找字串,返回第一个找到的字串的首字母下标 7
        System.out.println("abc".lastIndexOf("A"));//未找到则返回-1

        //字符串替换
        String str5="abcdbcd";
        String str6=str5.replace('a','A');//把所有的d替换成D
        System.out.println(str6);
        String str7="abcdeee".replace("eee","EEE");
        System.out.println(str7);

        System.out.println("javaccc".startsWith("java"));//判断是否以字符串开头  true
        System.out.println("javaccc".endsWith("java"));//判断是否以字符串结尾 false

        //截取子字符串(包头不包尾)
        String str8="abcdefghi".substring(5);//返回一个新字符串,从截取位置到串尾。 fhgi
        System.out.println(str8);
        String str9="abcdefghijk".substring(5,8);//返回一个新字符串,从截取位置后一个截取位置-1位置结束。 fgh(下标5到7)
        System.out.println(str9);

        System.out.println("abcDe".toUpperCase());//字符串变大写
        System.out.println("ABCDe".toLowerCase());//字符串变小写

        //去除首尾空格,中间一般不去
        String str10="  a b  ";//长度为7
        String str11=str10.trim();
        System.out.println(str11.length());
        System.out.println(str11);
        //如果要去中间的空格:
        System.out.println(str10.replace(" ",""));
        System.out.println(str10);//无变化

    }
}

注意:String时不可变字符序列,所有的替换、截取子字符串、去空格、转换大小写等都是生成新的字符串

引用他人文章对此部分进行细分https://blog.csdn.net/qq_35046158/article/details/80273010

二、内部类

1、内部类?

package studyweek3;
//外部类
public class study4 {
    private int age=10;
    private void show(){
        System.out.println("展示");
    }
    //内部类
    public class Inner{
        private String name="tony";
        private int age=20;

        public void showInner(){
            System.out.println("Inner展示");
            System.out.println(age);
            System.out.println(study4.this.age);//当外部类属性和内部类属性发生重名时,可以通过外部类名.this.成员名调用
            show();//内部类可以直接使用外部类的成员
        }
    }

    public static void main(String[] args) {
        study4.Inner inner01=new study4().new Inner();
        inner01.showInner();

        study4 out02=new study4();

1.1非静态内部类

1.2静态内部类

定义方式:static class ClassName{

类体

}?

?使用要点:

1.静态内部类可以访问外部类的静态属性,不能访问外部类的普通成员。

2.静态内部类看作外部类的一个静态成员。

1.3匿名内部类

适合那种只需使用一次的类。比如:键盘监听操作等等。在安卓开发、awt、swing开发中常见。

语法:new 父类构造器(实参类表)\实现接口(){

匿名内部类类体

}

package studyweek3;
public class study5 {
    public void run(jiekou a){
        a.show();
    }
    public static void main(String[] args) {
        study5 b = new study5();
       /* AA c=new AA();
        b.run(c);*///传参传类名
        b.run(new jiekou(){//匿名内部类,每次使用都要调用新的。注意格式:这里传参传接口,
            @Override
            public void show() {
                System.out.println("run");
            }
        }
        );
    }
}

//有名字的类,可以反复使用。
class AA implements jiekou{
    @Override
    public void show(){
        System.out.println("run");
    }
}
interface jiekou{
    void show();
}

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-02-03 01:03:47  更:2022-02-03 01:05:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:36:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码