JAVA基础 —— 关键字、泛型、常见类的方法

常用关键字

instanceof

instanceof是java的一个二元操作符,也是java的保留关键字。它的作用是测试它左边的对象是否是它右边类的实例,返回boolean类型的数据。

final、finally、finalize区别

 final可以修饰类、方法、变量:

  • final修饰类代表类不可被继承
  • final修饰变量表示变量不可被修改
  • final修饰方法表示方法不可以被重写

finally是java保证重要代码一定执行的机制

  • 可以使用try-catch或者try-catch-finally来进行类似关闭JDBC连接,保证unlock锁等动作

 finalize是继承类java.lang.Object的一个方法

目的是保证对象在被垃圾回收之前完成特定资源的回收操作,不推荐使用,且在JDK9之后已被deprecated。

static

可以用来修饰成员变量、成员方法、代码块、内部类等。

修饰成员变量和成员方法

被static修饰的成员被类中所有对象共享,通过类名.方式来调用。

静态代码块

静态代码块定义在类中方法外,静态代码块在非静态代码块之前执行,执行顺序为:(静态代码块 —> 非静态代码块                      —> 构造方法),而且有一点一定要注意,不论该类创建多少对象,静态代码块只执行一次。

静态内部类

  • 静态内部类的创建不需要依赖外围类的创建
  • 它不能使用任何外围类的非static成员变量和方法

泛型

Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编                       译时检测到非法的类型。

泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。

泛型方法 

该方法在调用时可以接收不同类型的参数,根据传递给泛型方法的参数类型,编译器适当的处理每一个方法调用。

规则:

  • 所有的泛型方法声明都有一个类型参数声明部分,由<>分隔,该类型参数声明部分在方法返回类型之前。
  • 每一个类型参数声明部分包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变                          量,是用于指定一个泛型类型名称的标识符。
  • 类型参数能被用来声明返回值类型,并且能作为泛型方法得到实际参数类型的占位符。
  • 泛型方法体的声明和其他方法一样,注意类型参数只能代表引用型类型,不能是原始类型(如int、double、char                      等)。

泛型类 

泛型类的声明和非泛型类的声明相似,除了在类名后边添加了类型参数声明部分。

和泛型方法一样,泛型类的类型参数声明部分也包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数也被称                      为一个类型变量,是用于指定一个泛型类型名称的标识符。因为他们接受一个或多个参数,这些类被称为参数化的类                      或参数化的类型。

常见类的方法 

Object类

  • 方法equals测试两个对象是否相等。
  • 方法clone进行对象拷贝。【这里有个问题,如何判断是浅拷贝还是深拷贝?】
    • 浅拷贝:浅拷贝是指拷贝对象时仅仅拷贝对象本身(包括对象中的基本变量),而不拷贝对象包含的引用指向的对象。
    • 深拷贝:深拷贝不仅拷贝对象本身,而且拷贝对象包含的引用指向的所有对象。
    • 举例:对象A1中包含对B1的引用,B1包含对C1的引用。
    • 浅拷贝A1得到A2,A2中依然包含对B1的引用,B1中依然包含对C1的引用。
    • 深拷贝则是对浅拷贝的递归,深拷贝A1得到A2,A2中包含对B2(B1的copy)的引用,B2中包含对C2(C1的copy)的引用。
  • 方法getClass返回和当前对象相关的Class对象。
  • 方法notify、notifyall、wait都是用来对给定对象进行线程同步的。

String类

String类的一些特性

  • String类代表字符串。
  • 字符串是常量,值在创建后就不能被更改。且因为String对象是不可变的,所以可以共享。
  • 字符串串联是通过StringBuilder(或StringBuffer)类及其append方法实现的。

                   一旦被创建就不能改变

StringBuffer类和StringBuilder类

  • StringBuffer类
    • 字符串缓冲区,也可以称之为一个容器。
    • 如果我们想对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。StringBuffer就可以解决这个问题。
    • 线程安全的可变字符序列,安全对应效率较低。
  • StringBuilder和String的区别
    • String是不可变的字符序列。
    • StringBuffer是可变的字符序列。
  • StringBuffer和String的相互转换
    • A:String <——> StringBuffer
      • 通过构造方法
      • 通过append()方法
    • B:   StringBuffer <——> String
      • 使用subString()方法
      • 通过构造方法
      • 通过toString()方法
  • StringBuilder类
    • StringBuilder是线程非安全的,其他类似StringBuffer,StringBuffer和StringBuilder底层是char[]数组实现的。

Pattern和Matcher类

正则的获取功能需要使用的类

正则表达式:是指一个用来描述或匹配一系列符合某个句法规则的字符串的单个字符串。 

Math类

Math类包含用于执行基本数学运算的方法。

public static final double E :         自然底数
public static final double PI:        圆周率
	* 成员方法

public static int abs(int a)               取绝对值
public static double ceil(double a)        向上取整
public static double floor(double a)       向下取整
public static int max(int a,int b)         获取最大值
public static int min(int a, int b)        获取最小值
public static double pow(double a,double b)获取a的b次幂
public static double random()              获取随机数  返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。
public static int round(float a)           四舍五入
public static double sqrt(double a)        获取正平方根

Random类

随机类

此类用于产生随机数,如果用相同的种子创建两个Random实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。

构造方法:

public Random()             没有给定种子,使用的是默认的(当前系统的毫秒值)
public Random(long seed) 给定一个long类型的种子,给定以后每一次生成的随机数是相同的

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值