Java SE部分的知识点(不定期更新)

一、static

  • 1、方法声明中用关键字static修饰的均为类方法或者静态方法,不用static修饰的方法称为实例方法;

  • 2、实例方法可以调用该类中的实例方法或者类方法,类方法只能调用该类的类方法或者静态方法,不能调用实例方法(静态方法只能调用静态方法,不能调用非静态方法)

二、java中的访问修饰符(访问权限)

访问修饰符 本类 同包 子类 其他
private × × ×
默认 × ×
protected ×
public
  • 1、外部类不能直接使用内部类的成员变量和方法,可以通过先创建内部类的对象,然后通过内部类的实例对象来访问其成员变量和方法;

  • 2、如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的的成员变量或方法,如果访问外部类的成员变量,可以使用 this.成员变量名 或者 this.方法() 来访问;

  • 3、java中的静态内部类

  • (1)静态内部类不能直接访问外部的非静态成员,但可以通过new 外部类().成员的方式访问;

  • (2)如果外部类的静态成员与内部类的成员名称相同,可以通过类名.静态成员的方式访问;如果外部类的静态成员与内部类的成员名称相同,则可以通过成员名直接调用外部类的静态成员;

  • (3)创建静态内部类的对象时,不需要外部类的对象,可以直接创建内部类:对象名 = new 内部类();

三、其他知识点

  • 1、String和Char的区别:

  • (1)String是字符串类型,Char是字符类型;

  • (2)Char要用单引号,String要用双引号;

  • (3)String是一个类,具有面向对象的特性,可以调用方法

  • 2、Switch条件语句:

- Switch(表达式){
    case 值:代码;
        break;
        ...
    default:代码;
        break;    
}
  • (1)Switch后面小括号的表达式的值必须是整型或者字符型;

  • (2)case后面的值可以是常量数值,也可以是一个常量表达式;

  • (3)case匹配后,执行匹配块的程序代码,如果没有遇到break则会继续执行下一个case块的内容,直到遇到break语句或者Switch语句块结束;

  • 3、while(判断条件){ 循环操作 },先判断,后执行

  • 4、do {循环操作}while(判断条件),先执行,后判断,至少执行一次

  • 5、当一个方法不需要返回数据时,返回类型(修饰符)必须是void;

  • 6、intrface常用public修饰,系统会默认加abstract;

  • 7、接口中的属性是常量,即使定义时不添加public static final修饰符,系统也会自动加上;

  • 8、实现接口用implements关键字

  • 9、多态体现在:父类 类名 = new 子类();

  • 10、数组定义:类名[] 数组名 ,数组中存放该类型的数据;

  • 11、多重for循环:外层循环控制行,内层循环控制列;

  • 12、公共类(public 修饰的)文件名必须与类名保持一致(相同)

  • 13、showSaveDialog()和showOpenDialog()方法决定文件对话框类型(JFileChooser对象)

  • 14、一个Java文件中只能含有一个public类

  • 15、抽象类的创建方式:abstract class className{ }

  • 16、增强for循环:(一般用于遍历数组)

java for(循环变量类型 变量名称:要遍历的对象){ 循环语句; }

//遍历Collection对象
//建立一个collection
String[] string = {"hello","how","are","you"};
Collection list = java.util.Arrays.asList(string);//将数组转换为List对象
//开始遍历
for(String str:list){
    System.out.println(str);
}

//遍历数组
int[] a = {1,5,3,7,6,0};
for(int i:a){
    System.out.println(i);
}
  • 17、基本数据类型的自动装箱与拆箱:

  • 基本类型数据和相应的对象之间互相自动转换;

  • 拆箱过程

graph LR
数据类型-->相应的对象  
  • 装箱过程

graph LR
数据对象-->数据类型
  • 18、重写接口的方法时,接口中的方法必须是public abstract方法,所以类在继承接口并重写接口方法时不仅要去掉abstract修饰符,给出方法体,而且一定要用public明显地标识出他的访问权限;

  • 19、abstract修饰的类不能创建对象,只能继承;

  • 20、访问权限:

  • 当用某个类在另外一个类中创建对象后,如果不希望该类对象直接访问自己的变量(即不能直接通过“.”运算符来操作自己的成员变量),就应当将成员变量访问权限设置为private;

  • 21、静态方法可以通过类名.方法名调用;

  • 22、for循环的死循环:

    for(;;){
        循环体;
    }
  • 23、数组和集合的区别:

  • (1)数组长度固定且不可变;

  • (2)集合可以在运行时动态变化;

  • 24、java中的集合框架体系结构:

graph TD
    A[Collection]
    A -->B[List可重复]
    A -->C[Queue可重复]
    A -->D[Set无序不可重复]
    B -->E[ArrayList]
    C -->F[LinkedList有序]
    D -->G[HashSet]
    B -->F
    H[Map]
    H -->I[HashMap]
  • 25、在没有引入泛型的概念之前(Java SE 1.5引入泛型的概念),对象存入集合都变成Object,取出时需要类型转换;

  • 26、迭代器遍历集合:

Interator it = List.interator();
while(it.hasNext()){
    
}
  • 27、线程:

  • (1) 线程是程序的最小执行单元

  • (2) 线程之间的关系:交互、互斥、同步

  • (3) 线程创建:构造方法

  • Thread()

  • Thread(String)

  • Thread(Runnable target)

  • Thread(Runnable target,String name)

//创建方式一:
Class ThreadName extends Thread{
    
}

//创建方式二:
class ThreadTest2 implements Runnable{
    
}

//创建方式三:
Thread thread = new Thread();

//创建方式四:
Thread thread = new Thread(String name);

//创建方式五:
Runnable rb = new Runnable();
Thread thread = new Thread(rd);

//创建方式六:
Runnable rb = new Runnable();
Thread thread = new Thread(rd,String name);
  • (4) 方法

void start();   //启动线程
static void sleep(long millis); //线程休眠、毫秒
static void sleep(long millis,int nanos);//休眠
void join();    //使其他线程等待当前线程终止
void join(long millis); //同上
void join(long millis,int nanos);   //同上
static void yield();    //当前运行线程释放处理器资源
static Thread currentThread();  //获取当前线程引用,返回当前运行的线程引用

IO流部分

IO流常用的有:字符流、字节流、缓冲流、序列化流、RandomAccessFile类等

1、字节流

  • FileInputStream/FileOutputStream

  • BufferedInputStream/BufferedOutputStream

2、字符流

  • InputStreamReader / OutputStreamWriter

  • BufferedReader / BufferedWriter

  • FileReader / FileWriter

  • 其中BufferedReader / BufferedWriter也称为 字符缓冲流 ,可以一次读一行,一次写一行;FileReader / FileWriter是从InputStreamReader / OutPutStreamWriter继承而来,InputStreamReader / OutputStreamWriter、BufferedReader / BufferedWriter是继承自Reader /Writer;

3、缓冲流(字节流下的缓冲流)

  • BufferedInputStream / BufferedOutputStream

  • 缓冲流是属于字节流的

4、RandomAccessFile类

  • RandomAccessFile类从字面意思来看就是随机写入写出,也就是说这个类有可以写入和写出两种方法;

5、对象的反序列化流、序列化流(ObjectOutputStream、ObjectInputStream)

  • 序列化流、反序列化流涉及到序列化接口(serializable),想要实现对象的序列化和反序列化,该对象必须继承序列化接口(即implements Serializable)

  • 注意:所有的流在完成操作后都需要执行关闭流的操作(即close()方法),同时对于输入流要进行刷新(即flush()方法)操作;

知识点积累

  • 1、关于抽象类和接口:
    • 类不可以多继承而接口可以;

    • 抽象类和接口都不能被实例化;

  • 2、二维数组:
    • 二维数组的定义中,第一个括号必须有数值,不能为空,但可为0;

  • 3、关于抽象类:
    • 一个子类只能继承一个抽象类,但可以实现多个接口;

    • 抽象类可以有构造方法,接口没有构造方法;

    • 抽象类可以有普通成员变量,接口不能有普通成员变量;

    • 抽象类和接口都可以有静态成员变量,抽象类中的静态成员变量访问权限任意,接口只能是public static final(默认);

    • 抽象类可以没有抽象方法,抽象类可以有普通方法, 接口中都是抽象方法;

    • 抽象类可以有静态方法,接口不能有静态方法;

  • 4、关于final的重要知识点:
    • final关键字可以用于成员变量、本地变量、方法以及类;

    • final修饰的成员变量必须在声明时被初始化,或者在构造器中初始化,否则就会报编译错误;

    • 不能够对final变量再次赋值;

    • 本地变量必须在声明时赋值;

    • 在匿名类中所有变量都必须是final变量;

    • final修饰的方法不能被重写;

    • final修饰的类不能被继承;

    • 没有在声明时初始化的final变量称为空白final变量(blank final variable),他们必须在构造器中初始化,或者调用this进行初始化,不然编译器会报错

  • 5、操作数据类型为byte、short、int 、char时,两个数都会被转换成int类型,并且结果也是int类型(在进行+,-,*,/,%运算操作时)
  • 6、方法入参:
    • 方法入参是基本类型时,传递的是值,方法内对传递值进行修改时不会影响调用是的变量;

    • 方法入参是引用类型时,传递的是引用地址,方法内对传递值进行修改时会影响调用时的变量;

package com.javasm.work3;

import java.util.Arrays;

public class TestMethod {
    public static void main(String[] args) {
        TestMethod method=new TestMethod();
        int b = 1;
        b = method.test1(b);
        System.out.println(b);
        
        int[] arr = {1,2,3};
        method.test2(arr);
        System.out.println(arr[0]);
        System.out.println(arr);
        Arrays.sort(arr);
    }
    
    /**
     * 方法入参是基本数据类型时,传递的是值
     * 方法内对传递的值进行修改时不会影响调用时的变量
     * @param a
     */
    public int test1(int a){
        a=2;
        return a;
    }
    
    /**
     * 方法入参是引用数据类型时,传递的是内存地址引用
     * 方法内对传递的引用进行修改时会影响调用时的变量
     * @param arr1
     */
    public void test2(int[] arr1){
        System.out.println(arr1);
        arr1[0] = 4;
    }
}

猜你喜欢

转载自www.cnblogs.com/caoleiCoding/p/8903682.html