1. Object类1.1 Object有哪些公用方法?a.方法equals测试的是两个对象是否相等b.方法clone进行对象拷贝【问题:是浅拷贝还是深拷贝?】c.方法getClass返回和当前对象相关的Class对象d.方法notify,notifyall,wait都是用来对给定对象进行线程同步的2. String类2.1 String类的一些特性String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。Java 语言提供对字符串串联符号("+")以及将其他对象转换为字符串的特殊支持。字符串串联是通过 StringBuilder(或 StringBuffer)类及其 append 方法实现的。2.2 一旦被创建就不能改变String s = new String(“hello”)和String s = “hello”;的区别String的特点一旦被创建就不能改变【内容不能变,引用可以变】

问答题

A:String的特点: 一旦被创建就不能改变B:案例演示 a:如何理解这句话 String s = "hello" ; s = "world" + "java"; 问s的结果是多少?下面这条语句一共创建了多少个对象:String s = “a”+“b”+”c”; 分别都是什么?答案:5个对象分别是 "a" , "b" , "c" , "ab" , "abc"因为字符串的特点是一旦被创建就不能被改变,所有在使用常量进行相加的时候,都是在创建新的字符串对象最后在把字符串"abc"这个常量值赋值给引用变量s

输出结果:

3. StringBuffer类与StringBuilder类3.1 StringBuffer类概述字符串缓冲区,StringBuffer是一个容器我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。 而StringBuffer就可以解决这个问题线程安全的可变的字符序列 , 安全对应的效率比较低3.2 StringBuffer和String的区别String是不可变的字符序列StringBuffer 是可以的字符序列3.3 StringBuffer和String的相互转换

A:String -- StringBuffer

a:通过构造方法b:通过append()方法

B:StringBuffer -- String

a: 使用substring方法b:通过构造方法c:通过toString()方法3.4 StringBuilder类StringBuilder是线程不安全的,其他跟StringBuffer一样;StringBuffer和StringBuilder底层是 char[]数组实现的4. 数组4.1 数组高级冒泡排序原理图解

冒泡排序原理

相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处冒泡排序代码

/*** 冒泡排序* @param arr*/private static void bubbleSort(int[] arr) { for(int y = 0 ; y < arr.length - 1; y++) { for(int x = 0 ; x < arr.length - 1 - y ; x++ ) { if(arr[x] > arr[x+1]) { int temp = arr[x] ; arr[x] = arr[x+1] ; arr[x+1] = temp ; } } }}4.2 数组高级选择排序原理图解 image

选择排序原理

从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处

数组高级选择排序代码实现

private static void selectSort(int[] arr) { for(int index = 0 ; index < arr.length - 1 ; index++) { for(int x = index + 1 ; x < arr.length ; x++) { if(arr[index] > arr[x]) { int temp = arr[index] ; arr[index] = arr[x] ; arr[x] = temp ; } } }}4.3 数组高级二分查找原理图解 image

数组高级二分查找思想

每一次都查中间的那个元素,比较大或者小就能减少一半的元素

数组高级二分查找代码

/** * 二分查找 * @param arr * @return */private static int binarySearch3(int[] arr , int value) { // 定义三个变量 int minIndex = 0 ; int maxIndex = arr.length - 1 ; while(minIndex <= maxIndex) { int midIndex = (minIndex + maxIndex) >>> 1 ; // 比较 if(arr[midIndex] == value) { return midIndex ; }else if(arr[midIndex] > value) { maxIndex = midIndex - 1 ; }else if(arr[midIndex] < value) { minIndex = midIndex + 1 ; } } // 返回 return -1;}5. 基本类型包装类5.1 为什么会有基本类型包装类

为了对基本数据类型进行更多的操作,更方便的操作,java就针对每一种基本数据类型提供了对应的类类型.

常用的操作之一:用于基本数据类型与字符串之间的转换

5.2 基本类型和包装类的对应

byte Byteshort Shortint Integerlong Longfloat Floatdouble Doublechar Characterboolean Boolean6. 正则表达式

正则表达式,不需要记忆,用的时候去查就可以呢

是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。其实就是一种规则。有自己特殊的应用。具体使用直接上网搜索例如,匹配手机号,邮箱,身份证号等等7. Pattern和Matcher类

* 正则的获取功能需要使用的类8. 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) 获取正平方根9. Random类

随机类

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

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

系统级类

System 类包含一些有用的类字段和方法。它不能被实例化。系统级操作