JavaSE知识点详细说明

一.JavaSE知识点说明
1.局部变量:属于方法或语句块。 成员变:自动被自动赋值默认初始值【属于对象】。 静态变量:是属于类的变量。
2.常量: 使用final来修饰的变量。 【 final double PI =3.14; 】
3.基本数据类型
整数类型:byte 、short 、int、long 【默认是int】
小数类型:float 、 double 【默认是double】
字符型:char
布尔类型:boolean
大小顺序: (byte、short、chart) -> int -> long -> float -> double
4.进制表示
0:0开头是八进制 0x:是十六进制 0b:是二进制
5.BigDecimal【任意浮点数据运行】、 BigInteger【任意整数精度运行】
6.运算符重要注意的知识点。
位运算符 : 中的0:false , 1:true 。
7.Scanner类
常用方法:
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine(); //接受键盘字符串
int age = scanner.nextInt();//接受键盘的整数
8.Math类生成随机数
Math.random(); //生成随机数(0,]
Random rd = new Random(); rd.nextInt(10);//生成[0,10)之间的随机数。
9.switch
switch(“int、枚举、jdk1.7后可以使用String”){
case 值1:
[break];

[defalut:
执行语句;]
}
10.while
while(boolean表达式){ …}
do{…}while(boolean表达式)

11.方法的重载
①在同一个类中
②方法名字相同
③ 形式参数个数或类型或顺序不同
###############################################################################
1.类基本概念和包含元素。
类是对一类事物的抽象【其中一类事物的某一个称为对象】。
类中主要包含元素有:属性和方法。
属性:常量、成员变量、
方法:构造方法、抽象方法、普通方法
2.构造器:【有参构造器 public Studen(int age,String name){…}】【无参构造器 public Studen(){…} 】
3.静态初始化块
格式:static{…}
作用:构造方法用户对象的初始化,静态初始化用于类的初始化操作。
静态初始化块调用顺序,与构造方法调用顺序一样。
4.继承主要点
①使用关键字:extends
②子类可以得到父类的全部属性和方法(除了父类的构造方法),但父类的私有的属性和方法可以不可以得到。
③java是但继续,接口是多继承。
④类没有继承的时候,都会默认继续Object类。
5.方法的重写
①发生的继续中
②方法签名相同
③重写的方法访问权限大于等于父类的访问权限
④返回类型小于等于父类的返回类型
6. 和equals
= =:当时基本类型的时间比较的值是否相等 ,引用类型的时候比较的地址是否相等。
equlas:比较的对象地址是否相同。
字符串比较使用equals类比较,因为String类重写的equals方法,比较内容是否相同。
7.supers:
是直接父类的引用,可以调用父类的属性和方法。
子类的构造方法中会默认加 super()去调用父类的构造器;
8.封装
使用修饰符来实现:public(所有)、protected(子类权限)、default(包权限)、private(同一个类)
9多态
使用:①继承或实现接口实现、②方法重写、③父类引用指向子类对象,来实现多态。
10.final
①final修饰属性就变为常量 ②final修饰方法是就不能重写 ③final修饰的类就不能继续了
11.数组
①数组一旦被创建就,它的大小就是不可以改变。数组就是对象。
②数组声明和分配空间 int[] ary = new int[10];
静态初始化:int[] ary = {1,2,3,4,5};
动态初始化:int[] ary = new int[1]; ary[0]=10;
③数组的遍历:可以用foreach遍历。
###############################################################################
1.抽象方法和抽象类
①定义:abstract class Animal{ abstract public void shout();}
②类中有抽象方法时,类必须是抽象类。
③子类继承抽象类的时候必须实现抽象方法。
④抽象类中和普通类一样,只不过多一个抽象方法。
⑤抽象类不能实例化

2.接口【public interface UserInterface {…}】
①接口中方法都是抽象方法,所以abstract可以省略。属性都是常量。
②接口可以多继承。| 接口中的方法不存在私有。|implement来实现接口,可以实现多个接口 。

3.内部类
①成员内部类【非静态内部类、静态内部类】
非静态内部类:【创建内部类对象Outer.Inner inner = new Outer().new Inner();】
class Outer{
private int age =10; public void testOuter(){}
class Inner{ int a = Outer.this.age; }
}
【①外部类不能直接访问非静态内部类成员。 ② 非静态内部类不能有静态方法、静态属性和静态初始化块。
③外部类的静态方法、静态代码块不能访问非静态内部类,包括不能使用非静态内部类定义变量、创建实例。
④这个类可以直接访问外面类的属性。⑤访问外部内的属性】
静态内部类:【 pulic class Outer{ static class Inner{}–>相等于类的一个静态属性 } 】
②匿名内部类:【 new 父类构造器(实参类表)\实现接口(){ //类体 } 】
③局部内部类:在方法中的内部类。作用之限于方法之中。
4.数组的拷贝_插入和删除元素。
数组拷贝的方法: System.arraycopy(src ,srcPos,dest,destPos,length);
5.冒泡排序_优化排序
int[] ary = {8,3,2,5,10};
for(int i=0;i<ary.length-1;i++){
for(int j=i+1;j<ary.length;j++){
int temp=0;
if(ary[i]<ary[j]){
temp = ary[i];
ary[i] =ary[j];
ary[j] = temp;
}
}
}
6.二分法查找_折半检索
int[] ary = {8,3,2,5,10}; int low = 0; int hig = ary.length-1; int value = 3;
while(low<=hig){
int mid = (low+hig)/2;
if(value
ary[mid]){ return mid;}
if(value<ary[mid]){ low = mid+1; }
if(value>ary[mid]){ hig = mid-1;}
}
###############################################################################
1.包装类使用、自动装箱、自动拆箱。
Integer a = new Integer(3); //把3整形包装成Integer对象。
Integer a = Integer.valueOf(30); //把3整形包装成Integer对象。
Integer a = Integer.parseInt(“999”); //把数字字符串转成Integer对象。
int c = a.intValue(); //包装类转成基本数据类型
①自动装箱 : Integer a = 23; //Integer a = Integer.valueOf(23);
②自动拆箱: int b = a; //a.intValue();
③缓存【创建一个-128,127,之间缓存数组,使用会检查是否在这个数组中,直接获取这个包装对象,否则重新创建包装对象】
Integer in1 =-128; Integer in2 =-128; 【 in1==in2 -->true 】
2.StringBuilder、StringBuffer【可变字符串】
①StringBuilder线程不安全,效率高。StringBuffer线程安全,效率低。
②append("") 、 reverse()、 setCharAt(3,‘g’)、 insert(2,‘o’)、delete(20,23);
3.Calendar[日期类]、Date[日期类]、DateFormat[日期格式化类]
①Calendar
Calendar calender = new GregorianCalendar(2999,10,9,22,10,50);
calender.get(Calendar.YEAR); //年 calendar.get(Calendar.MONTH);//月

 Calendar calender2 = new GregorianCalendar(); //获取今天的日期的Calendar
 calendar2.set(Calendar.YEAR,8012);//设置8012年

 Calendar calender3 = new GregorianCalendar(); //获取今天的日期的Calendar
 calender3.add(Calendar.DATE,100); //日期加100天
 calender3.add(Calendar.YEAR,100); //日期加100年
  
 Date dd4 = calender3.getTime();
 Calendar c = new GregorianCalendar(); 
 c.setTime(new Date());

②Date
Date d = new Date(); //【System.currentTimeMillis()获取当前时间】
d.getTime();//【获取当前时间】 d.afer(d1);//【d是否在d1的后面】
③SimpleDateFormat[DateFormat是抽象类]
DateFormat df = new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”);
String time = df.format(new Date(9000)); //把Date时间转成字符串
Date date = df.parse(“2018-02-09 09:00:33”); //把时间字符串转成Date
4.File类的使用
File f = new File(“d:\d.txt”); \【d:\t.txt】
f.renameTo(new File(“d:\t.txt”)); 改文件名字 【System.getProperty(“user.dir”); 获取用户当前目录】
f.createNewFile(); //创建文件
f.exists():是否存在
f.isDirectory():是否是目录
f.lastModified():最后修改时间
f.length():获取文件大小
f.getName():获取文件名
f.getAbsolutePath():获取文件绝对路径
f.delete();删除文件。
f.mkdir():必须要有父目录才能创建子目录
f.mkdirs():可以直接创建目录。
5.枚举类基本使用。
①定义枚举类: enum Season{ SPRING,SUMMER,AUTUMN,WINDER }
②使用枚举类:
class TestEnum{ public static void main(String[] args){
Season s = Season.SPRING;
switch(s){ case SPRING: System.out.println(""); break; … }
} }
################################################################################
1.Exception 、Error 、Throwable 三者关系
2.异常处理和自定义异常
################################################################################
1.Collection、Map关系
Collection:{ Set:{HashSet}, List:[ArrayList,LinkedList]}
Map:{ HashMap }
2.Collection接口、List接口、ArrayList常用方法。
①Collection接口的方法
c.size():大小 | c.isEmpty():是否为空 | c.add(“惠普”):添加元素 | c.remove(Object o);移除元素
c.clear():清空所有元素 | c.toArray():转成object数组 | c.contains(“联想”):是否包含某个元素
②ArrayList类常用方法(有序可重复)
list01.addAll(list02):把list02集合所有元素加到list01中
list01.removeAll(list02):把list01和list02相同的部分删掉
list01.retainAll(list02):把list01与list02不相同的元素移除掉
list01.containsAll(list02):list02元素是否在list01集合都存在
③List接口
list.add(int index,E element):在指定位置添加一个元素 | list.remove(2):删除2位置的元素 |
list.set(2,“hh”);把2位置的元素修改成"hh" | list.get(2):获取2位置的元素 |
list.indexOf(Object o):返回第一次出现的元素的位置,没有返回-1
list.lastIndexOf(Object o):返回最后出现的元素的位置,没有返回-1
3.ArryList底层JDK源码读解
【jdk8】ArrayList长度不够的时候阔容大小: length +(length >> 1)
4.手工实现ArrayList1(最简化的方式,添加泛型)
5.LinkedList特点【查询效率低,增删效率高,线程不安全】
6.Map接口【 HashMap、TreeMap、HashTable】
①HashMap
HasMap的常用方法:put、size、putAll、isEmpty …
HashMap底层原理:
存:数组+链表【key->hashCode()->获取hash码->根据算法获取对于的数组位置->存对于的Entry数组中(hash、key、value、next),hash值相同就存对于的链表】
取:key->hashCode()->根据算法获取数组index->到数组找对应链表->根据key调用equals()进行比较找值。
达到0.75*length时,就会扩大原来的2倍。默认大小为16.
【java中规定:两个内容相同equals()为true,对象必须有相同的hashCode】
②TreeMap
排序的时候用,按照key递增的方式排序。
自定义排序需要实现Comparable接口,实现compareTo(Emp o){}方法排序规则。【负数:小于, 0:等于, 整数:大于】

③HashTable
HashMap:线程不安全,效率高。允许key或value为null。
HashTable:线程安全,效率低。不允许key或value为null。
7.Set接口
Set接口【没有顺序,不可重复】, List接口【有顺序,可重复】
Set{HashSet,TreeSet}
①HashSet:【底层是HashMap实现】
②TreeSet:【底层实际是TreeMap,可以实现排序】
8.迭代器
迭代器遍历List: Iterator iter = list.iterator(); iter.hasNext();
迭代器遍历Set: Iterator iter = set.iterator(); iter.hasNext();
迭代器遍历Map:
方式一:Set<Entry<K,V>> set = map.entrySet(); Iterator<Entry<K,V>> iter = set.iterator(); iter.hasNext();
方式二:Set keySet = map.keySet(); Iterator iter = set.iterator(); iter.hasNext();
9.Collections工具类【是对Set、 List、Map进行排序填充等等】
shuffle(list):随机排列list中元素
reverse(list):逆序排列
sort():按照递增排序
binarySearch(list,“ll”);采用二分法查找元素
10.表格数据存储,以map和list存储整张表。【orm:对象关系映射。表格每一行使用Map,整个表格使用List存储】
################################################################################

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java之书

会持续更新实用好的文章谢谢关注

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值