JavaSE核心知识点总结(一)

简介: JavaSE核心知识点总结

1、带参数方法定义


格式:public static void 方法名(参数){......}

格式(单个参数):public static void 方法名 (数据类型变量名){......}

public static void isEvenNumber (int number) {......}


2、接口的特点

1)接口用关键字interface修饰 public interface接口名{}

2)类实现接口用implements表示 public class 类名 implements 接口名{}

3)接口不能实例化

接口如何实现实例化呢?参照多态的方式,通过实现类对象实例化,这叫接口多态。

多态的形式:具体类多态,抽象类多态,接口多态。

多态的前提:有继承或者实现关系;有方法重写;有父(类/接口)引用指向(子/实现) 类对象

4)接口的实现类

要么重写接口中的所有抽象方法

要么是抽象类


5)接口里的成员变量只能是常量,且被静态修饰,(一般默认有static final修饰),接口里没有非抽象方法(一般默认有public abstract修饰),接口没有构造方法,因为接口主要是对行为进行抽象的,是没有具体存在的。

6)一个类如果没有父类,默认继承自Object类

7)接口使用成员方法时,不能有方法体:Interface abstract methods cannot have body


3、类和接口的关系

1)类和类的关系

继承关系,只能单继承,但是可以多层继承

2)类和接口的关系

实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口

3)接口和接口的关系

继承关系,可以单继承,也可以多继承

4、String line = sc.nextLine();用于获取键盘录入字符串数据

5、String构造方法

public String():创建一个空白字符串对象,不含有任何内容

public String(char[] chs):根据字符数组的内容,来创建字符串对象

public String(byte[] bys):根据字节数组内容,来创建字符串对象

String s=”abc”;直接赋值的方式创建字符串对象,内容就是abc(推荐使用)

6、Set集合特点

1)set集合不包含重复元素的集合

2)没有带索引的方法,所以不能用普通for循环变量

3)Hashset:对集合的迭代顺序不做任何保证

7、Map集合的遍历(方式一)

1)获取所有键的集合,用keySet()方法实现

2)遍历键的集合,获取到每一个键,用增强for循环实现

3)根据键去找值,用get(Object key)方法实现

8、内部类的访问特点

1)内部类可以直接访问外部类的成员,包括私有

2)外部类要访问内部类的成员,必须要创建对象

9、Math类没有构造方法,想要使用类中的成员,看类的成员是否都是静态的,如果是,通过类名就可以直接调用

10、Thread类中设置和获取线程优先级的方法

1)public final int getPriority():返回此线程的优先级

2)public final void getPriority(int newPriority):更改此线程的优先级

线程默认的优先级是5;线程优先级的范围是1-10;

线程优先级高仅仅表示线程获取得CPU时间片的几率高,但是要在次数比较 多,或者多次运行的时候才能看到你想要的效果。

11、相比继承Thread类,实现Runnable接口的好处

1)避免Java单继承的局限性

2)适合多个相同程序代码去处理同一个资源的情况,把线程和程序的代码、数据有效分离,较好地体现了面向对象的设计思想。

12、同步代码块

锁多条语句操作共享数据,可以使用同步代码块实现

1)格式:synchronized(任意对象){

   多条语句操作共享数据的代码

}

2)synchronized(任意对象):就相当给代码加锁了,任意对象就可以看成一把锁。

同步的好处和弊端

3)好处:解决了多线程的数据安全问题

4)弊端:当线程很多时,因为每个线程都会去判断同步上的锁,这是很耗费资源的,无形之中会降低程序运行效率。

13、网络编程的三要素

1)IP地址:唯一标识网络中的设备

2)端口号:唯一标识设备中的应用程序

3)协议:通信双方必须同时遵循对应的协议才能完成数据交换,常见的协议有UDP协议、TCP协议

14、UDP发送数据

1)创建发送端的Socket对象(DatagramSocket)

2)创建数据,并把数据打包

3)调用DatagramSocket对象方法发送数据

4)关闭发送端

15、UDP接收数据

1)创建接收端的Socket对象(DatagramSocket)

2)创建一个数据包,用于接收数据

3)调用DatagramSocket对象方法接收数据

4)解析数据包,并把数据在控制台显示

5)关闭接收端

17、不能创建对象的三种情况

1)第一种:private修饰的私有对象

构造方法私有,不能创建对象

原因 :因为子类要创建对象,继承父类。就得调用父类的构造方法,此时父类的构造方法被私有了,也就不能创建对象了。

2)第二种:抽象类

原因 :抽象类(父类)里的方法很有可能是抽象方法。假如抽象类也能创建对象,创建对象之后,它调用自己的方法,而此时的方法却没有方法体,这时候创建的对象也没有意义,所以说抽象类不能创建对象。

拿animal的例子来想,动物是一个抽象类,抽象类不是具体的事物,如果创建一个动物的对象,那它有可能是猫,也有可能是狗,那就不确定了。

3)第三种:接口

原因 :接口创建不了对象,因为成员变量默认都是常量。而构造方法是用来给成员变量初始化并赋值的,此时成员变量是常量,所以无意义。故接口没有构造方法,也创建不了对象。

16、TCP发送数据的步骤

1)创建客户端的Socket对象(Socket)

2)获取输出流,写数据

3)释放资源


17、TCP接收数据的步骤

1)创建服务器端的Socket对象(ServerSocket)

2)监听客户端连接,返回一个Socket对象

3)获取输入流,读数据,并把数据显示在控制台

4)释放资源

18、网络编程出现的问题

客户端:数据来自于文本文件,接收服务器反馈

服务器:接收到的数据写入文本文件,给出反馈

出现问题:程序一直等待

原因:读取数据的方法是阻塞式的

解决方法:自定义结束标记;使用shutdownOutput()方法(推荐)

19、泛型的好处

1)把运行时期的问题提前到了编译期间

2)避免了强制类型转换

20、成员变量:类中方法外的变量,局部变量:方法中的变量

21、static关键字在使用的时候需要注意的几点

1)在静态方法中不可以使用this关键字

2)在静态方法中不可以直接调用非静态方法

3)局部变量不可以使用static关键字声明

4)主方法必须使用static声明

5)只有内部类才可以使用static关键字声明

22、final关键字

1)修饰方法:声明该方法是最终方法,不能被重写

2)修饰变量:表明该变量是常量,不能被再次赋值

3)修饰类:表明该类是最终类,不能被继承

4)变量是基本类型:final修饰的是基本类型的数据值不能发生改变

5)变量是引用类型:final修饰指的是引用类型的地址值不能发生改变,但是地址里面的内容是可以发生改变的

23、抽象类和接口的区别

抽象类是对事物的抽象(包括行为和属性),而接口是对行为的抽象。

门和警报的例子

门:都有open()和close()两个动作,这个时候,我们可以分别使用抽象类和接口来定义这个抽象概念

//抽象类
public abstract class door{
      public abstract void open();
      public abstract void close();
      public abstract void alarm();
} 

所有继承了这个抽象类的子类都具备了报警功能,有的门根本不需要报警功能

//接口
public interface Door{
    void open();
    void close();
    void alarm();
}

open和close这两个方法也必须去实现,也许这个类根本不具备open和close这两个功能,所以应该把open和close放在抽象类中,alarm放在接口中。

相关文章
|
缓存 安全 Java
【Java】Java核心要点总结70
1. volatile 如何保证变量的可⻅性? 在Java中,使用volatile关键字可以确保变量的可见性。 当一个线程修改了一个被volatile修饰的变量时,它会立即将该变量的最新值刷新到主内存。而其他线程在读取该变量时,会从主内存中重新获取最新值,而不是使用缓存中的旧值。 这样做的原因是,普通的变量在多线程环境下存在线程间不可见的问题。每个线程都有自己的工作内存,由于运行速度快和编译优化等原因,线程可能会直接读取工作内存中的旧值,而不去主内存中获取最新的值,导致线程之间的数据不一致。
|
7月前
|
Java 编译器 数据安全/隐私保护
一文让你深入了解JavaSE的知识点(上)
一文让你深入了解JavaSE的知识点
|
7月前
|
安全 Java 程序员
一文让你深入了解JavaSE的知识点(下)
一文让你深入了解JavaSE的知识点(下)
|
7月前
|
Java Unix 大数据
第二章:Java介绍(开篇推荐)
第二章:Java介绍(开篇推荐)
56 3
【JavaSE】Java(五十二):核心要点总结
1. java中普通类和抽象类有哪些区别 Java中普通类(也就是非抽象类)和抽象类有以下几个区别: 实例化:普通类可以直接被实例化为对象,而抽象类不能直接被实例化。抽象类需要被继承后,由其子类来实现其中定义的抽象方法。 抽象方法:普通类不能包含抽象方法,而抽象类必须至少包含一个抽象方法。抽象方法是一种没有具体实现的方法,它只有声明而没有方法体。抽象方法必须在抽象类的子类中被实现。
|
存储 Java
【JavaSE】Java(五十五):核心要点总结
1. 为什么不允许静态方法访问非静态变量 在Java中,静态方法属于类级别的方法,它不依赖于任何实例对象,只能访问类变量(即static修饰的变量)和其他静态方法。而非静态变量是实例级别的变量,需要通过实例对象才能访问。
|
存储 缓存 安全
【JavaSE】Java(五十四):核心要点总结
1. try-catch-finally中 如果 catch 中 return 了,finally 还会执行吗? 会执行的。 当try块中发生异常时,控制流会立即转到相关的catch块,执行其中的代码。如果在catch块中出现了return语句,那么该方法或函数的执行就会结束,并且不会再返回到try块或finally块中。 但是,无论是否出现异常,finally块中的代码都会在try块之后或者catch块之后执行。这意味着即使在catch块的return语句中完成了对返回值的处理,finally块中的代码仍然会被执行。
|
存储 安全 算法
【JavaSE】Java(五十六):核心要点总结
1. byte 类型 127 + 1等于多少 当byte类型的值超出它的范围时,它会发生溢出并且变为负数。在Java中,byte类型是一个8位有符号整数,取值范围为-128到127。 因此,在进行 byte 类型 127 + 1 的操作时,由于它已经超出范围了,所以结果会发生溢出,并变成 -128 (即计算结果是 (byte) (127 + 1) = -128)
|
存储 缓存 Java
【JavaSE】Java(五十三):核心要点总结
1. 简要说下什么是反射 Java反射是指在运行时获取类信息,包括类的各个成员变量、方法和构造函数等信息,并可以通过这些信息调用对象的方法或创建对象。通俗点说,反射就是程序在运行时检查一个类、获取该类的属性和方法信息,然后利用这些信息操作该类。
|
Java 编译器 索引
【JavaSE】Java(五十一):核心要点总结
1. String str = “love”; 和 String str = new String("love);一样吗? 这两种方式都可以用来创建一个 String 类型的对象,但是有所不同。 第一种方式:String str = “love”; 是直接赋值的方式来创建 String 对象。在编译代码时,Java 编译器会为你自动创建一个 String 对象,并将 “love” 这个字符串赋值给它,这种方式也称为字符串字面量(String Literal)。此外,Java 在编译过程中还对相同的字符串进行了常量池优化,使得字符串字面量的复用更加高效。