基础 巩固

本文介绍了Java编程中的基础概念,包括cmd命令、数据类型(基本和引用)、运算符、数组的初始化、方法的重写、对象和封装。还详细讲解了String、StringBuilder和StringBuffer的区别,以及继承、多态的概念。此外,提到了接口、内部类、异常处理机制、文件流和线程进程的理解。
摘要由CSDN通过智能技术生成

cmd常用的命令

2.基本工具:

   jvm是java代码运行的地方,jdk包含jre,jre包含jvm

 

基本数据类型:四类八种。引用数据类型:除了基本数据类型的其他类型,使用new创建的变量,字符串常量、数组常量等,这些也属于引用数据类型。

 

 

 逻辑运算符

 

移位运算符:》《

 数组的初始化有两种方式:静态初始化和动态初始化。

方法的return返回值,是返回到方法的调用处。

 

方法的重写本质是虚方法表中的方法被覆盖重写,只有非private,非static,非final修饰的才能加入虚方法表。

对象:类就像是汽车的设计图,它定义了汽车应该具有哪些属性和方法。而对象就像是根据设计图制造出来的实际的汽车,它具有类定义的属性和方法,并且可以使用这些属性和方法。

当我们在 Java 程序中使用 new 关键字来创建一个类的实例时,就相当于根据类的设计图制造了一辆新的汽车。这辆新的汽车就是一个对象,它具有类定义的属性和方法,并且可以使用这些属性和方法。

private修饰属性:private权限修饰符,当一个类中的属性被声明为 private 时,它只能在类的内部访问,不能在类的外部访问。如果我们想要在测试类或其他类中访问这个属性,可以通过定义 public 的 getter 和 setter 方法来实现。this主要就是区分成员变量和局部变量,this.name调用的是成员属性。

封装:封装是指把一个对象的状态信息(也就是属性)隐藏在对象内部,不允许外部对象直接访问对象的内部信息,通常是private修饰属性,定义get,set给外界来访问。类中的属性和方法都是这个类的,类似声明,如果要调用需要创建这个类的实例来调用。

String、StringBuilder和StringBuffer

  • String、StringBuilder和StringBuffer都是用于处理字符串的类,它们的核心功能都是对字符串进行操作,如拼接、截取、大小写转换等等。
  • 它们之间的区别在于对字符串的修改操作上不同,String是不可变的,StringBuilder和StringBuffer是可变的,因此String需要频繁创建新的对象,StringBuilder和StringBuffer则可以避免这种浪费。

 

 二维数组:arr[1][3]: 是arr数组的第二个一维数组,以及第二个一维数组的第4个元素。

API:API是已经写好的类、方法、接口、包等组件的集合,为Java开发者提供了一系列可重用的代码,可以方便地进行应用程序开发。这些组件的功能被封装起来,使开发者可以直接调用它们的方法。常用api有Arrays类,是一个操作数组的工具类,包含的常用方法有

 

使用arraylist集合时,集合的<>中的泛型,在 Java 的泛型中可以使用的类型主要分为两类:引用类型和通配符类型。包装类也就是基本数据类型的引用类型主要为

当使用static修饰方法时,可以通过类名直接访问静态方法,而不需要创建类的实例对象。公共的静态方法可以被其他类中的代码访问和调用。注意不能定义静态的类如果里面有非静态的属性方法可以创建实例来访问非静态的和静态的方法和属性(但不推荐),通常用类名访问静态。要访问静态方法中的非静态属性,需要定义静态方法的实例化参数,可参考以下代码:

 public class MyClass {
    int ss;

    public static void myStaticMethod(MyClass obj, int ss) {
        // 可以通过实例来访问非静态变量
        obj.ss = ss;
    }
}

// 测试类
public class Test {
    public static void main(String[] args) {
        MyClass myObject = new MyClass();
        MyClass.myStaticMethod(myObject, 10);
        System.out.println(myObject.ss); // 输出 10
    }
}

继承:子类继承父类时,父类的构造方法不能被继承,因为名不一样,父类的属性如果是被private修饰,子类也不能继承这个属性,父类中的成员方法,如果这个方法是非private修饰或非static或非final修饰的就可以被继承。在子类中调用属性和方法遵守就近原则,调用时若是子类中没有了再去父类找。

多态:一个对象的不同表现形式,前提是1,子类继承父类,2,父类引用指向子类对象,当new一个实例时,可以把子类的对象实例的类型改为父类。3,有方法的重写。注意:父类变量不能引用子类特有的方法和变量。父类和子类,如果有同名的属性,就会访问父类属性,但是方法不一样,方法会重写。调用成员变量,编译看左边,运行看左边。调用成员方法,编译看左边,运行看右边。

final修饰

抽象方法,在方法上加abstract,只要有抽象方法则为抽象类。有抽象类也就是,子类必须重写方法。

 接口是一个行为规则,定义一个规则来实现各种行为。接口中只能是常量,定义的方法为抽象方法或者可定义静态方法。在接口中一般情况下方法后面没有方法体默认为抽象方法,实现类中要重写抽象方法,若是调用接口的静态方法则以接口名来调用,接口和抽象类中抽象方法不能有方法体。接口中的成员变量(不含方法)只能是 public static final 类型的,不能被修改且必须有初始值。

内部类:在类中还有一个类,内部类可以访问外部类的方法属性,但是,外部类需要创建对象才能访问内部类的方法属性。局部内部类,是定义在方法体里面的类。

匿名对象:没有名字的对象,比如 new student()。并且只能使用一次。

 匿名内部类,为了简化代码,以及只使用一次实例而开发的,主要格式:new 父类名或接口名() {

// 类成员的定义和实现

};

匿名内部类可以直接写在测试类中,也可以写在任何其他的实体类中。匿名内部类是指,没有名字的局部内部类。

正则表达式:

 算法:1.二分查找,在这个算法中,要查找的数据必须是有序的。2.插值查找是以公式来查找

3.斐波那契查找,也是公式

4. 分块查找,对数据进行分块,块内数据是无序的,但块间有序就是后面的块内元素都比前面的块内元素大。5.哈希查找算法,主要是根据设计的哈希函数来得到存储的索引,根据索引直接获取要查找的数据,哈希冲突是设计的哈希函数不满足,使多个数据存到同一个位置,想解决可以使用线性探测法。6.冒泡排序,相邻两个数据比较,小的放前,大的放后。7.选择排序,0索引的元素与后面的元素依次比较,每一次0索引元素与比他大的交换位置,小的在左,大的在右。8.插入排序,从0索引开始,分组,有序的分为一组,遇到无序了就分为另一组。然后遍历无序的元素依次与有序的组的元素比大小,然后插入把无序的元素插入有序的组。9.快速排序,使用递归算法,就是在自己的函数体中再次调用自己,要注意有出口。快速排序,最主要是先找一个基准数,让这个数与数组的最前面开始比较大小,找到比基准数大的,同时还有在数组的最后面开始往前,找比基准数小的,然后这两个找到的数交换位置,当i,j两个下标都找到同一个元素时,把基准数与这个元素交换位置,这样左边都是比基准数小的,右边都是比基准数大的。

lambda表达式:主要是简化匿名内部类的代码,主要侧重于函数的功能,看方法的形参以及方法体的内容,主要格式:()->{   },

集合:是一个容器存储数据,长度可变,集合存储引用数据类型,对于基本数据类型,存储的是包装类。集合大体分为两类,Collection单列集合以及Map双列集合

 

迭代器遍历

 如果想要以lambda表达式来遍历,则使用foreach()。

双列集合map:

数据结构:判断是否为平衡二叉树,选取任意节点,看这个节点的左右子节点的高度差不超过1。红黑树,一种自平衡的二叉查找树。

方法引用需要满足:

::符号是方法引用符号。

异常捕获

纯文本文件有.txt以及.md或者.xml文件

字节输入\输出流是用于读取写出二进制数据的一种流,以字节为单位进行操作。

stream流:Stream流提供了一种基于函数式编程风格的处理方式,可以让我们以一种比传统迭代器更简洁、更高效的方式处理集合数据。

Java中的流分为以下几种:

  1. 输入流(InputStream)和输出流(OutputStream)
    输入流和输出流是字节流,用于对二进制数据进行读写操作。在java.io包中有多种实现,例如FileInputStream、FileOutputStream、ByteArrayInputStream、ByteArrayOutputStream等。

  2. 字符流(Reader和Writer)
    字符流是对字符数据进行读写的数据流,使用字符流可以方便地读写文本数据。在Java中,Reader和Writer是字符流的基类,主要有FileReader、FileWriter、CharArrayReader、CharArrayWriter等实现类。

  3. 缓冲流(BufferedInputStream和BufferedOutputStream、BufferedReader和BufferedWriter)
    提供了高效的缓存实现,可以减少I/O次数,提高I/O性能。

  4. 数据流(DataInputStream和DataOutputStream)
    可以将Java中基本类型数据直接转换为二进制数据流进行读写,提供了方便的基本类型数据读写方法。

  5. 对象流(ObjectInputStream和ObjectOutputStream)
    可以将Java中的各种对象转化为二进制流进行读写。对象流可以在网络传输和数据持久化等方面提供方便。在实际使用中,需注意需要将要传输或存储的对象进行序列化(Serializable)。

  6. 数组流(ByteArrayInputStream和ByteArrayOutputStream)
    用于在内存中读写二进制数据。可以将内存中的数据转化为流对象,也可以将流对象中的数据读取到内存中。

线程和进程:多个app在后台运行是叫进程,而每个app里面的多个功能是叫线程。 

匿名内部类只能是接口,关于lambda表达式???快排????

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值