前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java 基础

Java 基础

原创
作者头像
JiahuiZhu1998
修改2023-05-05 11:46:20
4310
修改2023-05-05 11:46:20
举报
文章被收录于专栏:JiahuiZhu1998_技术笔记

1. Java 异常

异常包含 Error, Exception, 而 Exception 包含 运行时异常RuntimeException非运行时异常CheckedExceptions 通用异常又可以分为JVM级异常程序级异常

  • Error 不可以被 try-catch
  • Exception 可以被try-catch 而 try-catch-finally 中 finally 部分是不管是不是异常都需要运行的部分
  • RuntimeException 包含 NullPointerException, ClassCastException, IllegalArgumentException, ArithmeticException, ArrayStoreException, IndexOutOfBoundsException, NegativeArraySizeException, NumberFormatException, SecurityException, UnsupportedOperationException
  • CheckedException 包含 IOException (FileNotFoundException 是IOException的一种), SQLException

Throw 和 Throws 有本质区别

  • Throw 是把Exception 抛出,Throws 是把 Exception 抛给上一层文件

2. Java 反射

反射定义:

在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法; 并且对于任意一个对象,都能够调用它的任意一个方法;

反射中的compile class 和 running class:

Person p=new Student(); 其中编译时类型为 Person,运行时类型为 Student

JAVA的 Reflection APi: Java.lang.reflec

Class,Field,Method,Constructor 分别代表类的信息, 成员变量, 类的方法,类的构造器

JAVA 反射获取Object 的 3种方法:

  1. 调用 Object的getClass() ----- Person p=new Person(); Class clazz=p.getClass();
  2. 调用 Class 的 class ----- Class clazz = Person.class;
  3. 调用 Class 的 forName() ----- Class clazz = Class.forName("class of path");

JAVA 反射创建Object 的 2种方法:

  1. 调用 Class 的 newInstance()
  2. 调用 Contructor Object 的 newInstance()
代码语言:javascript
复制
// Java 反射创建 Object 例子如下:
// 获取 Person 类的 Class 对象
Class clazz=Class.forName("reflection.Person"); 
//使用.newInstane 方法创建对象
Person p=(Person) clazz.newInstance();
//获取构造方法并创建对象
Constructor c=clazz.getDeclaredConstructor(String.class,String.class,int.class);
//创建对象并设置属性
Person p1=(Person) c.newInstance("李四","男",20);

3. Java 注解

Java注解中的4种标准Meta Annotation

  1. @Target 指 Annotation 修饰的范围
  2. @Retention 指 Annotation 被保留的时间长短
  3. @Documented 指 class 可以被文档化
  4. @Inherited 指 class 是被继承的

Java注解中的注解处理器

自定义Annotation 例子, 继承 AbstractProcessor

4. Java 内部类

静态内部类 Java Static Inner Class

静态内部类可以用外部类的所有static变量和方法, 包括 private的

成员内部类 Java Member Inner Class

non-static的,因此只能定义non-static的方法和变量在这个内部类中

局部内部类

在一个method 里面的 class

匿名内部类

调用的时候直接 new 一个对象并写好内容后调用

5. Java 范型

<?extends T> 代表 T类型的子类; <?super T> 代表 T类型的父类

6. Java 序列化

一个 class 如果实现了 Serializiable, 那这个class就可以被序列化

ObjectOutputStream 和 ObjectInputStream 可以实现序列化和反序列化

writeObject 和 readObject 可以实现自定义序列化

序列化ID 即UID 决定了 JVM是否允许反序列化

序列化不保存 static variables

如果 子类实现了serializable, 父类没有实现 serializable, 那么父类不能被序列化

Transient 可以阻止变量被序列化到文件中

7. Java 复制

直接赋值复制

Apple apple1 = apple2

浅复制

复制Object,不复制引用的Object

深复制

复制 Object 和 引用的Object

序列化

将 Object 序列化之后写进Stream中, 再从Stream中读出来, 然后转换成完整的对象

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Java 异常
    • Throw 和 Throws 有本质区别
    • 2. Java 反射
      • 反射定义:
        • 反射中的compile class 和 running class:
          • JAVA的 Reflection APi: Java.lang.reflec
            • JAVA 反射获取Object 的 3种方法:
              • JAVA 反射创建Object 的 2种方法:
              • 3. Java 注解
                • Java注解中的4种标准Meta Annotation
                  • Java注解中的注解处理器
                  • 4. Java 内部类
                    • 静态内部类 Java Static Inner Class
                      • 成员内部类 Java Member Inner Class
                        • 局部内部类
                          • 匿名内部类
                          • 5. Java 范型
                          • 6. Java 序列化
                          • 7. Java 复制
                            • 直接赋值复制
                              • 浅复制
                                • 序列化
                                领券
                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档