跳过正文
Java面向对象高级编程—核心
  1. TP` Blog/

Java面向对象高级编程—核心

·1 分钟· loading ·
龙城飞将
作者
龙城飞将
最美的是月亮🌙……
目录
Java学习之旅 - 这篇文章属于一个选集。
§ 5: 本文

看完这里,Java可以说事熟练和精通的状态

1. 代码块
#


  • 静态代码块
    • 使用static{} 执行一次,
    • 作用:完成类的初始化
  • 实例代码块
    • 使用{},每次创建对象都执行,在构造器之前执行
    • 做用: 与构造器一样,完成对象的初始化

2. 内部类
#


2.1 成员内部类
#

类中的一个普通成员,对象持有,与其他类一样使用

// 创建格式
Out.Inner oi = new Outer().new Inner();

2.2 静态内部类
#

有static 修饰,属于外部类自己持有

// 创建格式
public class Outer {
		public static class Inner {
		}
}
Outer.Inner in = new Outer.Inner();

2.3 局部内部类
#

定义在方法、代码块、构造器等执行体中

2.4 匿名内部类
#

  • 认识

    是一种特殊的局部内部类,不需要我们对这个类声明类的名称,默认有个隐藏的名字

    new /接口(){
    类体方法重写
    };
    
    new Animal(){
    		@oberride
    		public void cry(){}
    };
    
  • 特点:本质是子类,并创建一个子类对象

  • 使用形式

    • 作为一个对象参数传给方法
  • 应用场景

    • 调用别人提供的方法实现需求时,传输匿名对象给参数,需要才会写
    JButton btn = new JButton("denglu")
    btn.addActionListener(new ActionListener(){
    		@Override
    		public void actionPerformed(ActiobEvent e){
    				//功能
    				System.out.println("denglu");
    		}
    });
    
    //简化成一行代码
    btn.addActionListener(e -> System.out.println("denglu"));
    

3. 函数式编程
#


3.1 Lambda JDK 8 可似增加的语法形式
#

可以用于替代某些匿名内部类的对象,可读性更好更简洁

被重写方法的形参列表-> {
		方法体代码
}

注: Lambda只能代替函数式接口的匿名内部类

  • 有且只有一个抽象方法的**接口**
  • 大部分函数式接口,有@FunctionalInterface的注解,用来约束当前接口必须是函数式接口

进一步简化

  • 参数类型可以不写
  • 如果只有一个参数,还能将()省略,多个参数不能省略
  • 如果Lambda表达式只有一行代码,大括号可以不写,同时省略分号“;”,有return也必须去掉
e -> {方法体代码}
(o1,o2)-> o1.getAge() - o2.getAge()

3.2 方法引用
#

类名::静态方法

  • 简化Lambda表达式,如果→两边的参数一致,表达式里知识调用一个静态方法,可以用静态方法引用
o1,o2-> o1.getAge() - o2.getAge()
Student::compareByAge

对象名::实例方法

4. 常用API
#


4.1 String
#

创建、封装、调用API处理字符串对象

  • 方式一:直接创建对象
  • 方式二:构造器创建字符串对象
//一
String name = "hhh"

// 二 new
public String()//空白字符对象
public String(String s)
public String(char[] chars)
public String(byte[] bytes)

区别

  • 方式一:会存储到字符常量池中,且相同内容字符串只存储一份
  • 方式二:通过new的方式创建字符串,每new一次会产生一个新的对象存储在堆内存中

4.2 ArrayList
#

  • 数组完成定义后长度固定,集合就不会,大小可变,功能更多
add(E e)//添加数据
add(int index, E e)//指定位置添加数据
get(int index)//获取指定位置的数据
size()//返回集合的元素大小
remove(int index)//删除指定位置的元素,并返回元素
remove(Object o)//直接删除元素,返回是否成功
set(int index, E e)//修改指定位置的元素,并返回被修改的元素

Java学习之旅 - 这篇文章属于一个选集。
§ 5: 本文