文章目录
一、java基础
1.1 JAVAEE的13个规范
二、java基础语法
2.1 final
1.被final修饰的类不可以被继承
2.被final修饰的方法不可以被重写
3.被final修饰的变量不可以被改变
2.2 static
被static修饰的方法和变量是和这个类关联在一起的,被类的所有实例对象所共享
2.3 异常
“抓抛”模型:
1.抛:异常的生成方式
1.1 自动抛:程序执行过程中一旦出现异常,就会在出现异常的代码处,自动生成对应异常类的对象并抛出.
1.2 手动抛:程序执行过程中,在不满足指定条件的情况下,我们主动使用“throw + 异常类的对象”方式,手动将异常类的对象抛出
2.抓:异常的处理方式
2.1 自己抓:try-catch-finally
2.2 交给别人抓:throws
异常的两种处理方式:1.try-chatch-finally 2.throws
/*try {
可能出现异常的代码全部包在try的大括号里
}catch (Exception e){
e.printStackTrace(); // 打印详细异常信息(常用)
e.getMessage();
}finally {
一定要执行的语句,eg:关闭资源等
}*/
public class ExceptionHandleTest {
/*public static void main(String[] args) throws Exception {
try {
method(); // 方法调用过程中,main()方法是最后一层,必须在main()方法中处理其他方法throws上来的异常
}catch(){
}finally{
}
}
public static void method() throws Exception{
可能出现异常的代码 // 将出现的异常throws给调用method方法的方法去
}*/
}
手动抛出异常
在实际开发中,如果出现不满足具体场景的代码问题,有必要手动抛出一个指定类型的异常对象
比如:有一个Student类,有个id属性,要求不能为负数。这种场景从java层面来说没有问题,因为变量可以为负数,但是在具体的开发场景中就不行了,因此要根据实际开发场景要求,手动抛出异常
1.手动抛出运行时异常,可以不做处理
public class ExceptionHandleTest {
public static void main(String[] args) throws Exception {
Student student = new Student();
student.regist(-10);
}
}
class Student {
private int id;
public void regist(int id) {
if(id >= 0){
this.id = id;
}else{
throw new RuntimeException("输入的id为负数");
}
}
}
2.手动抛出的不是运行时异常,必须进行处理
public class ExceptionHandleTest {
public static void main(String[] args) throws Exception {
Student student = new Student();
student.regist(-10);
}
}
class Student {
private int id;
public void regist(int id) {
if(id >= 0){
this.id = id;
}else{
try {
throw new Exception("输入的id为负数");
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
2.4 权限修饰符
Java中的权限修饰符分为四种:public
,protected
,缺省
,private
可修饰对象 | 可用修饰符 |
---|---|
外部类 | public和缺省 |
成员变量、成员方法等 | public,protected,缺省,private |
实际在IDEA开发工具中写代码时,如果修饰符使用不合理导致不能使用,IDEA会做出相应提示。
2.5 继承
2.5.1 继承的好处
- 继承的出现减少了代码冗余,提高了代码的复用性
- 继承的出现,更有利于功能的扩展
- 继承的出现让类与类之间产生了
is-a
的关系,为多态的使用提供了前提。继承描述事物之间的所属关系,这种关系是:is-a
的关系。可见,父类更通用、更一般,子类更具体
注意:不要仅为了获取其他类中某个功能而去继承!
2.5.2 继承的细节说明
- 子类会继承父类所有的
实例变量和实例方法
(其他的不会继承) - 子类虽会继承父类私有的成员变量,但子类不能对继承的私有成员变量直接进行访问,可通过继承的get/set方法进行访问
- 在Java 中,继承的关键字用的是“extends”,即子类不是父类的子集,而是对父类的“扩展”
2.5.3方法重写
- 子类重写的方法
必须
和父类被重写的方法具有相同的方法名称
、参数列表
- 子类重写的方法的返回值类型
不能大于
父类被重写的方法的返回值类型。注意:如果返回值类型是基本数据类型和void,那么必须是相同的 - 子类重写的方法使用的访问权限
不能小于
父类被重写的方法的访问权限。注意:父类私有方法不能重写 - 子类方法抛出的异常
不能大于
父类被重写方法的异常
2.6 Object类
2.6.1 equals()
==
既可以比较基本类型也可以比较引用类型。对于基本类型就是比较值,对于引用类型就是比较内存地址- equals()是属于java.lang.Object类里面的方法,如果该方法没有被重写过默认也是==。String等类的equals方法是被重写过的,而且String类在日常开发中用的比较多,久而久之,形成了equals是比较值的错误观点,具体要看自定义类里有没有重写Object的equals方法来判断
- 通常情况下,重写equals方法,会比较类中的相应属性是否都相等
2.6.2 toString()
- 默认情况下,toString()返回的是
对象的运行时类型 @ 对象的hashCode值的十六进制形式
- 在进行String与其它类型数据的连接操作时,自动调用toString()方法
Date now=new Date();
System.out.println(“now=”+now); //相当于
System.out.println(“now=”+now.toString());
- 如果直接
System.out.println(对象)
,默认会自动调用这个对象的toString()
- 可以根据需要在用户自定义类型中重写toString()方法。如String 类重写了toString()方法,返回字符串的值。
s1="hello";
System.out.println(s1);//相当于System.out.println(s1.toString());
三、java基础用法
3.1 时间格式化
public class DateTest {
public static void main(String[] args) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
simpleDateFormat.applyPattern("yyyy-MM-dd HH:mm:ss");
System.out.println(simpleDateFormat.format(new Date()));
}
}
sout:2023-07-30 16:38:50