Java基础
Java基础
此部分学习时还未建立该笔记网站,后续将会补充
最近做了几个java后端开发的笔试题,发现自己还是太蠢了,其实很多JavaSE的内容都不会,赶快来记录学习一下。
修饰符:
private一般修饰成员变量、成员方法、构造方法,只能本类内部访问
default(或者不写权限修饰符默认的),一般修饰成员变量、成员方法、构造方法,本类以及同包下类能够访问
protected一般修饰成员变量、成员方法、构造方法,本类、同一包中的类、子类能够访问
public一般修饰类、成员变量、成员方法、构造方法,以上所有情况以及不同包下的类都能够访问
PreparedStatement与Statement
这俩东西我更是之前听都没听过,现在应用开发大多都是SSM架构,Mybatis框架真的让一些数据库操作变得无比简单,老旧的JDBC都很少见了,这两个就是关于JDBC的两个接口
项目 | Statement | PreparedStatement | CallableStatement | Wrapper |
---|---|---|---|---|
基础接口 | Statement | PreparedStatement 继承 Statement | CallableStatement 继承 PreparedStatement | 所有 JDBC 接口都实现了 Wrapper |
SQL 类型 | 静态 SQL | 参数化 SQL | 存储过程 | 不执行 SQL,仅用于包装查询 |
性能 | 最低 | 高 | 高 | N/A |
安全性(防注入) | 差 | 好 | 好 | N/A |
使用难度 | 简单 | 中等 | 稍高 | 主要用于驱动开发或高级场景 |
类方法和this
类方法(static修饰的方法)的主要特点是属于类本身而不是对象实例,因此:
- 不能使用this关键字
- 可以直接调用同类其他类方法
- 可以访问类变量
- 可以通过对象实例调用实例方法
类中调用实例方法是否要用 this?
只有在实例方法中才能使用 this 来调用另一个实例方法或变量。
this 表示当前对象的引用,只能在非静态(实例)方法中使用。
在一个实例方法中调用另一个实例方法或访问实例变量时,可以用 this(可省略)。
在类方法(static 方法)中是不能使用 this 的,因为没有具体的对象实例供它引用。
总结
this 只能在实例方法中使用;
实例方法调用另一个实例方法可以使用 this(但不是必须);
静态方法不能访问非静态成员,除非通过对象引用;
静态方法不能使用 this。
Java中方法的书写
public abstract class MyClass {
public int constInt = 5;
//add code here
public void method() {
}
}
"public abstract void method(int a);"是正确的,因为:
- 在抽象类中可以定义抽象方法
- 抽象方法的语法格式正确:使用abstract修饰符,没有方法体,以分号结束
- 参数列表和返回值类型的定义也符合Java语法规则
"constInt = constInt + 5;"错误:
- 这是一个语句而不是成员定义
- 类体中只能包含成员定义,不能直接写执行语句
"public int method();"错误:
- 这个方法声明与已有的method()方法冲突
- Java不支持仅通过返回值类型来区分重载方法,但是入参和返回类型一起修改是可以的
"public abstract void anotherMethod() {}"错误:
- 抽象方法不能有方法体
- 这里错误地为抽象方法添加了空的方法体{}
- 正确的抽象方法声明应该以分号结束而不是大括号
文件处理相关
在Java中,所有文件在底层都是以字节形式存储的,因此无论是文本文件还是二进制文件,都可以当作二进制文件来处理。这也是为什么Java提供了统一的字节流类(如FileInputStream和FileOutputStream)来处理所有类型的文件。
File类是用于表示文件和目录路径名的类,它只能用于获取文件信息、创建或删除文件,而不能直接进行文件的读写操作。文件的读写需要使用IO流相关的类。
重载和重写
重载
方法重载(Overloading) 是在同一个类中定义多个方法名相同、参数列表不同的方法。仅改变返回类型而参数完全相同是不能构成重载的。
重写
重写要求方法名、参数列表完全相同,但返回类型可以是父类方法返回类型的子类(协变返回类型)。例如:
class Animal { Animal get() { ... } }
class Dog extends Animal { Dog get() { ... } } // 合法重写
private方法是类私有,子类不可见,因此无法重写。子类中定义的同名方法仅是独立的新方法,与父类无关。
接口和类
在 Java 中,接口(interface)确实可以使用 extends 关键字继承一个或多个其他接口。这与类只能继承一个父类不同,接口之间是支持多继承的。这种机制允许将多个接口的契约(方法声明)组合到一个新的接口中。
若要实现一个接口为普通类则必须实现接口的所有抽象方法。
其他
GUI
Java基本的GUI(图形用户界面)设计主要依赖java.awt包,该包提供了创建用户界面和绘制图形图像的所有基本组件。java.awt(Abstract Window Toolkit)是Java最基础的GUI工具包,包含了基本的GUI组件如Button、Label、TextField等。
Java 标识符(变量名)
Java标识符的命名规则:
- 可以由字母、数字、下划线(_)和美元符号($)组成
- 不能以数字开头
- 不能是Java关键字和保留字
- 区分大小写
- 不能包含空格和其他特殊字符
Java和C++一样具有继承封装多态的特性