JAVA知识点梳理

我的博客:lcatake_flume,spark,zookeeper-CSDN博客

看不懂的话进去看看

1.Java的三个版本

JAVASE 基本

JAVAME 微缩

JAVAEE 旗舰

3.java的特点

面向对象

跨平台jvm将java文件转变为字节码文件(.class)在多个系统中运 行字节码文件

5.Java的三个组件

JDK 语言开发包

JRE 运行环境

JVM 虚拟机

6.基本数据类型

 整数:byte(1字节) short(2) int(4) long(8)

浮点:float(4) double(8)

 字符串:char(2)

布尔:boolean 

5.基本数据类型精度

byte

6.  基本数据类型之间的转换规则

1.低精度给高精度 自动转换

2.高精度给低精度 强制转换

 3.不同类型进行运算时,先将低精度转为高精度,精度一致后再进行计算    

7.break,continue

break 跳出循环

cotinue 跳出本次循环

8.三目运算符 

判断条件?条件满足:条件不满足

9.switch 数据类型 

buty,short,int,char,String

10.while do..while区别

while 先判断后执行

switch 数据类型 buty,short,int,char,String

11.获取控制台的信息

Scanner s1=new Scanner(System.in);

while (s1.hasNext()){

String str1=s1.next();

12.数组的缺点

必须要指定数组长度

13.创建多维数组:

1.int[ ][ ]  a1=new int[3][ ];

a1[0]=new int[1];

2.int[ ][ ]  a1=new int[3][ ];

3. int[][] a3={{1},{2,3},{4,5,6,7},{7,4,5,1}};

14.冒泡排序

 int[] arr = {2, 11,4,7,5,22,15,37,12,1};

int zjvalue = 0;//中间值

boolean boo=false;

//冒泡比较相邻元素将小的提前打的放后

//外层循环时用来控制轮数

//内存循环控制每一轮的;排序

//每个元素都走完一遍全部的长度

for (int i = 0; i < arr.length ; i++) {

boo=false;

//每一轮排序都会将最大的一个排到最后 所以-i

for (int j = 0; j

if (arr[j] > arr[j + 1]) {

//存储小的值

zjvalue = arr[j];

//把大的值赋给小的

arr[j ] = arr[j+1];

//把小的值赋给大的

arr[j+1] = zjvalue;

}

boo=true;

}

if (boo==false){

break;

}

}

for (int a : arr) {

System.out.print(a + ",");

}

System.out.println();

15.杨辉三角

int[][] arr=new int[7][];
for (int i = 0; i < arr.length; i++) {
arr[i]=new int[i+1];
}
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j
if (j==0||j==arr[i].length-1){
arr[i][j]=1;
}else{
arr[i][j]=arr[i-1][j]+arr[i-1][j-1];
}
}
}

for (int i = 0; i < arr.length; i++) {
for (int j = 0; j
System.out.print(arr[i][j]);
}
System.out.println();
}

16.递归算法的条件

递归:

//1.有出口

//2.有递归算法

17.数组的三个方法

1.是否相等 Arrays.equals

2.复制:system.arraycopy

arraycopy(Object src,  int  srcPos, Object dest, int destPos,int length);

3.排序Arrays.sort

18.String的方法 (至少十个)

1。charAt() 

2。replace() 替换字符串 ,replace(旧内容,新内容) 全部对应元素都要改变 str2.replace("a","q");

3。isEmpty() 判断字符串是否为空 

4。concat() 连接字符串

6。indexOf() 查询字符第一次出现的位置 

7。lastIndexOf() 查询字符最后一次出现的位置

8.endsWith() 判断字符串是否以。。。结尾

9。toUpperCase()

10。toLowerCase() 

11。contains() 

12。subString() 截取字符串

13。split() 拆分字符串,变成数组

14。equals() 判断字符串是否相等 

15。compareTo() 比较两个字符串

1.如果相同返回0;

2.第一次不同如果是数值,返回长度差

第一次不同如果是字符,返回两个字符的Ascrll码的差值

16. startsWith("a");以。。开始

17.lenght() 数组长度

19.Math的方法10个

1.Math.max(20.0,10) 最大值 二选一

2.Math.min(20.0,10) 最小值

3.Math.abs(2-1) 绝对值

4.Math.ceil(9.1)相上取整 浮点数

5.Math.floor(8.9) 向下取整

6.Math.round(8.6)四舍五入

7.Math.pow(x,y) x的y次幂'

8.Math.sqrt(64)开平方

9. Math.random()[0,1)随机数

10.Math.PI 圆周率

20.全局遍历和局部变量的区别

//【区别】:1.初始值不同:成员变量有系统给定的默认值

//局部变量没有初始值 需要使用必须赋予初始值

//2.作用域:成员变量可以在整个类中使用;

//局部变量只能在声明的区域内使用

//3。内存地址不同:成员变量存储在堆,局部变量存储在栈

21.什么是面向对象及其特征

//1.面向对象:面向对象是一种编程思想,所有的操作都是针对对象的属性和方法进行操作

//万事万物皆对象

// 2.面对对象的特征:封装,继承,多态,抽象

22.什么是类什么是对象

//3。类:class,类就是描述事物的抽象概念,可以看作一类物的模板

//4.对象:对象就是类的具体实例

//5.类与对象的关系:类是对象的模板,对象是类的实例

23.构造方法

//【构造方法】:1.没有返回值也不用加void

//2.方法名和类名一样

//构造方法:默认无参构造方法--当没有 有参构造方法时,可写可不写,系统默认提供

//当有了构造方法 需要使用无参构造方法时,必须写出来无参构造;

24.值传递与==

//值传递:

//1.基本数据类型传递的是值

//2.类类型传递的是地址

//==

//1.基本数据类型比较的是值

//2.类类型比较的是地址

25.静态

//关键字 static:静态

//静态修饰的对象: 变量 方法 代码块

//静态修饰的变量:1.调用方法: 引用.静态变量;类名.静态变量

//2.在类加载到内存时,还没有创建对象就已经分配了内存

//3.静态只能调静态

// 静态修饰 的方法:1.静态方法只能访问静态成员变量

//2.静态方法中,不能使用this和super

//3.静态方法只能调用其他的静态方法;不能调用其他实例方法

//静态修饰的代码块:类的加载顺序1.静态代码块在没有创建对象之前,【主动执行一次】

//2.非静态代码块,在【每次】创建对象之前都会主动执行一次

26.封装的概念及其可见性和好处

//【封装】:java把变量和方法封装到类中,通过可见性实现封装

//可见性:

//1.public:公共的 在工程中可见

//2.protected:受保护的,当前类可见,本包可见,外包的子类

//3.default: 不写的时候(默认) 本类,本包可见;

//4.private:私有的,本类可见

//【封装的好处】:1.提供方法名供外界调用

// 2.对内隐藏数据,防止被破坏

27.包装类已经自动装箱,自动拆箱

//int------Integer *

//char---Character *

//【自动装箱】:把基本数据类型转换成对应的封装类

//【自动拆箱】:把封装类转换成基本数据类型

28.重载与重写 

【重载 Overload】:在同一个类中 方法名相同,参数的个数或类型不同;

//【重写 @Override】 :在子类重写父类方法时,同名,同参,同返回类型 ;

//重写后的子类的可视性不能比父类的可视性更严格

29.有继承关系的加载顺序

//(前两步)只执行一次

//父类静态代码块

//子类静态代码块

//(后四步)每次对象创建就执行一次

//父类非静态代码块

//父类构造方法

//子类非静态代码块

//子类构造方法

30.//【继承关系中的构造方法】

// 1.父类和子类都没有构造方法时,系统会给父类与子类分别提供默认的无参构造方法(父类只提供父类,子类提供父类和子类)

//2.如果父类存在有参构造方法,子类必须在构造方法的第一行用super(传参)调用父类的构造方法

31.【super】

//1.区分父类的成员变量和子类的成员变量

//2.子类可以在第一行用super(传参)调用父类的构造方法

//3.子类可以在实例方法用super.实例方法 来调用父类的实例方法

32.This

1.区分成员变量和局部变量

//2. 在构造方法的第一行,用this(传参)调用其他的构造方法

//3.在实例方法使用this.方法名调用其他的实例方法

// 33. 【final】

 1.final 定义的量叫常量,一经修改就不能改变

//2.final 修饰的类不能被继承

// 3.final 修饰的方法不能被重写但可以重载

34.// 【向上转型】 【向下转型】 动态绑定

//【向上转型】:父类的引用指向子类的对象

//1.只能调用父类的方法和父类的属性,不能调用子类的方法和属性;

//2.如果子列重写了父类的方法,调用的是子类的重写方法

//【向下转型】:父类的引用 赋值给子类的引用

//1.可以调用父类和子类的属性和方法

//2.父类的引用必须是:向上转型的引用

  3.向下转型的子类必须和向上转型的子类一致

动态绑定 :在执行期间 而非编译期间,判断引用的类型,根据实际情况调用方法和属性

35.抽象及其在描述抽象时不可以使用的关键字

//[抽象]:共性的内容抽取到父类,但是某些内容无法在父类中具体实现

//1.抽象方法只有方法声明,没有方法体({})

//可见性 abstract 方法名();

//2.包含抽象方法的类必须声明为抽象类

//3.抽象类里可以有实例反法,构造方法和属性

//4.抽象类不能直接new对象,用来给子类new对象和初始化成员变量

//5.继承抽象类的子类,必须重写父类所有的抽象方法

//final因为final类 不能继承,final方法不能被重写

//static 在类加载时已经分配了内存,无法继承和重写

//private仅本类可见,外包无法访问

//使用抽象方法: 必须要重写,有共性

36.接口

//[关键字]:声明接口 interface

//:实现接口 implements

//1.默认被 public static final 修饰的静态常量;

//2.不能写构造方法

//3. 默认被public abstract修饰的抽象方法

//4.接口可以多实现,用","分割

//5.接口可以继承接口 可以【多继承】(java单继承)

//接口 extends 接口1,接口2.。。

//6.如果类是带有继承关系的接口,

//那就需要把所有父接口和子接口的抽象方法全部实现一遍

 接口回调 

接口的对象指向了 (已经实现了此接口)类的对象

// 这个变量只能调用此接口和父接口在实现类中重写和方法和属性(此接口)

37.java集合体系

//6个接口: 单列 :Collection,(父接口)

// 1.List 有序(有下标,存储位置)(不能去重)

// 2.set 无序(无法使用下标)(可以去重)

//2.1 SortedSet

// 多列:Map

// 1.SortedMap

//一个工具类:Collections

38.[泛型]:

在集合中用来规定集合的类型

List: 实现类及其区别

Arraylist 2.LinkedList

//1.ArrayList底层是数组存储,LinkList底层是双向列表

//2.ArrayList适合查找,LinkList适合增删

39.List的常用方法

//1.添加元素(在末尾添加,指定位置添加)add可以添加null 并在集合中出现 返回的是布尔类型

//2.删除元素 remove

//3.清空集合

//4。判断是否为空 isEmpty() 

//5.查看集合是否包含某个元素 contains

//6.查找元素下标 indexOf

40.遍历集合三种

//1.for-each循环 元素 集合是整数类型,当有null不能使用,会有空指针异常

for (int i:list1){

System.out.println(i);

}

//2.下标长度 list1.size() 获取值 list1.get(i)

for (int i=0;i

System.out.println(list1.get(i));

}

//迭代器 Iterator 是一个接口 提供了遍历集合的方法

Iterator it = list1.iterator();

while(it.hasNext()){

System.out.println(it.next());

}

41.// LinkList 独有的方法

//独有的 打印第一个值:list2.getFirst()

//打印最后一个值:list2.getLast()

//删除第一个值: list2.removeFirst();

//删除最后一个值:list2.removeLast();

42.集合 数组互转

//List和数组转换

//1.集合转数组list1.toArray();

//2.数组转集合Arrays.asList(brr);

Set及其接口的实现类和子接口实现类的区别

//【Set】:继承于Collection集合(无序)

//实现类:HashSet

//【SortedSet】:set的子接口

//实现类:TreeSet

//HashSet

//1.去重,可以添加空 不可以选择添加的位置

//2.for-下标 不能使用 s1.get(i)报错

//3.indexOf 无法使用

//TreeSet

//1.不能添加null,按照数字,字母顺序排序,去重,无法通过指定下标写入

//2.for-下标 不能使用 s1.get(i)报错

//3.indexOf 无法使用

//4.不能添加存储类类型 需要重写compareTo方法;

重写equals

@Override

public boolean equals(Object obj){

// 对比的双方是本体 this指向前面的引用名

if (obj==this){

return true;

}

if (obj instanceof People){

People pp=(People)obj;

return pp.sfz.equals(this.sfz);

}else {

return false;

}

}

//在重写equals时,必须重写hashCode

@Override

public int hashCode() {

return Objects.hash(sfz);

}

Map的实现类与实现类的特点与区别

//【Map】:双列集合,键值对形式存储,映射关系(kay,value)

//实现:HashMap

//子接口:SortedMap Map的子接口

//实现类:TreeMap

//HashMap

//1。可以插入null

//2.key不可以重复 会覆盖value值

//3.value值可以重复

// TreeMap

1.key不可以为null

//1.添加 put 返回值不是布尔类型

获取key value和key value对(方法和返回值类型就行)

//2.遍历 普通for循环无法使用get

//1.key

//keySet() 返回值为Set集合 Key为int 存储不能为null

 Set setkey= m1.keySet();

for (int i:setkey){

System.out.print(i);

}

System.out.println();

//2.value

//values() 返回值为Collection

 Collection cc=m1.values();

 Iterator it=cc.iterator();

 while (it.hasNext()){

 System.out.println(it.next());

// 3.key和valueentrySet 返回值为Set>

Set> entry= m1.entrySet();

for (Map.Entry en:entry){

System.out.print("key:"+en.getKey()+","+"value:"+en.getValue());

System.out.println();

}

Iterator it3=entry.iterator();

while (it3.hasNext()){

System.out.println(it3.next());

}

常见异常

//1.ArrayIndexOutOfBoundsException 数组下标越界异常

// 2.StringIndexOutOfBoundsException 字符串下标越界异常

//3.NullPointerException 空指针异常

//4.ClassCastException 类转换异常

//5.ArithmeticException 算术异常

//6.NumberFormatException 数字转换异常

50. 【异常的五个关键字】

// try: 指定一个代码块预防所有异常,需要紧跟catch

//后面可以跟多个catch,按照异常顺序捕获异常

//如果有0个catch必须跟上finally

//catch:放在try后面,用来捕获异常类型

//finally: 无论是否发生异常,fianlly都会执行

//在return之前执行.

//

//throws:放在方法名后面主动抛出异常;

//throw:放在方法体里,主动抛出异常;

51. [自定义异常];

//1.新建异常类,继承Execption类,创建构造方法,设置message信息

//2.在需要的地方 用throw new 新的异常类 来抛出异常

52.File的方法

System.out.println(f1.getPath());//地址

System.out.println(f1.getAbsolutePath());//绝对地址

System.out.println(f1.getName());//文件名

System.out.println(f1.exists());//文件是否存在

System.out.println(f1.length());//文件大小

System.out.println(f1.lastModified());//最后一次修改的毫秒数

//获取父目录 getParent() 返回String
        getParentFile() 返回File

//创建文件 createNewFile() 文件前的地址一定要存在否则报IoExecption

//创建目录

//mkdir 如果地址不存在 返回false 创建失败

//mkdirs 如果地址不存在 会把所有的父级目录全都创建一次

//创建文件 createNewFile() 文件前的地址一定要存在否则报IoExecption

//创建目录

//mkdir 如果地址不存在 返回false 创建失败

//mkdirs 如果地址不存在 会把所有的父级目录全都创建一次

//【i/o体系】:及其创建

//1.处理单位:字节流,字符流

// 2.处理流向:输入流,输出流

//3.处理功能:节点流,处理流

字节:

FileInputStream input=null;

FileOutputStreamoutput=null;

input=new FileInputStream(path); output=new FileOutputStream(path)

字节处理流:

BufferedInputStream input = null;
BufferedOutputStream output = null;
input = new BufferedInputStream(new FileInputStream(path));
output = new BufferedOutputStream(new FileOutputStream(path)

字符:

FileReader input = null;

FileWriter output = null;

input = new FileReader(path;

output = new FileWriter(path);

字符 处理流

BufferedReader input = null;

BufferedWriter output = null;

input = new BufferedReader(new FileReader(path) {

});

output = new BufferedWriter(new FileWriter(path));

54.字节流和字符流用于读取什么文件

//字节流:适合处理音频,视频,图片读取汉字 分成三个数字

//字符流:通常适合用于处理汉字多的文本文件 读取汉字 分成一个数字

Write和append的区别

write 不可以写空 append可以为空

Write穿的是 int 和byte

append可以直接串String

你可能感兴趣的:(java,开发语言)