JavaSe
Posted 鼠标
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaSe相关的知识,希望对你有一定的参考价值。
- Java_se易忘点总结
1、java jdk1.7版本以上都支持变量接收二进制
以0b或者0B开头代表二进制
八进制:0开头
十六进制:0x开头
2、基本数据类型分类:
整数型:byte(1字节),short(2),int(4),long(8)
浮点型:float(4字节),double(8)
字符型:char(2)
布尔型:beelean(1)
3、Float和long定义变量时必须加f/l
Example:Float f = 23f Long l = 123l;
浮点型默认为double - Byte,Short,Int,Long封装类型都有缓冲区【-128-127】
- 4、Java变量的命名规则:以字母, _ ,$开头,其它随意(java、关键字和特殊符号除外,中间不能有空格)。
5、‘0’==48 ‘A’==65 ‘a’==97 理解为数字一样的东西
任何数据类型都是先转换为10进制,然后转为二进制交付JVM处理。
6、 Char类型和int类型相互转换
7、 (char)100 (int)‘a’
8、 数据类型的转换规则:从大到小:强制转换
int num = 100; short num2 = (int)num;
从小到大:自动转换
9、 int indexnum = String.valueOf(ch).getBytes("utf-8").length; 一个中文utf-8编码下 长度为3
10、.equals() ==
.uquals()同一数据类型的比较
== 基础数据类型比较,值相等都为true
javascript中==比较值,===比较值+地址
11、拆箱/装箱:(相同数据类型)
封装数据类型和基本数据类型之间的转换
开发中应用于数据类型和字符串之间的关系
ValueOf()转换为封装数据类型
parseInt()转换为基本数据类型
form表单传递给后台的数据都是字符串类型的
java的数字进制都是10进制
12、整数相除一定要用float接收,才可以得到你想要的结果。
比如:1/3 得到的结果是0
开发中一般用于计算百分比
正确的计算方法 float f = 1/3(float);
这里注意:1、必须用float接收
2、除数和被除数必须有一方要转为float类型
12、整数相除中分母不能为0,如果在除数和被除数中有一方为浮点型结果必为浮点型,浮点型/0结果为infinity
-浮点型/0=-infinity(负无穷数)
5%0.0结果为:NaN 5%0报错分母不能为0
%:在开发中用于倒计时等
理解:如果一个秒数%60、永远介于0-60之间
13、Css|js文件的外部引入格式
<link type=”text/css” rel=”stylesheet”
href=”main.css”>
<script type=”text/javascript” src=”main.js” >
</script>
14、str.startwith(x); 排断是否以x开头
Str.endwith(x);排断是否以x结尾
应用数据类型的默认值:null - Equals()方法 :数据类型相同,值相同的情况下才为true
15、相同的分装数据类型
在-128-127内都为true 超过范围为false
因为-128-127的取值范围在缓存里面被存储了
16、断点调试:
F8:跳跃断点(从目前断点调到下一个断点)
F6:逐行执行
F5L进入方法
17、数组提供了一个工具类:Arrays
可以用来进行数组和集合之间的转换
String arr[] = {"3232","fdfasd","发"};
List<String> list = Arrays.asList(arr);
Object aa[] = list.toArray();
for (Object object : aa) {
System.out.print(object+"\t");
}
18、算法;java中:冒泡算法,快速算法,递归算法,归并算法
JS中:寻路算法,背包算法,螺纹算法
19、集合:
Set集合:无序,不允许重复,因为他的底层是hashcode实现的(维护),允许存储空值。
Treeset:利用二叉树(红黑树)算法来维护元素的顺序,其内置了一个排序器,默认排序
Hashset:在未来开发中,若有过滤和去重等的要求,可以考虑使用hashset
集合+数组相互转换:
String arr[] = {"3232","fdfasd","发"};
List<String> list = Arrays.asList(arr);
Object aa[] = list.toArray();
20、对象:
两个对象相同:一hashcode相同,二、equals相等
每个对象对应都有一个hashcode值,
21、lam表达式:针对集合才有的(jdk1.8新增内容)
遍历集合:list.forEach(num->System.out.println(num));
遍历对象:list.forEach(stu->System.out.println(stu.getname());
list.removeIf(num->条件);符合条件的会被删掉
Js中 splice(sindex,nums,替换的值):nums是替换的个数
Js: Splice(sindex,nums)sindex:从那里开始nums剪切的个数
22、Math方法
取整:Math.round(); 向上取整;
Math.floor();向下取整
以上两种方式都不能保留小数位
double d = 21.52654d;
String cc = new DecimalFormat("#.####").format(d);
“#.##”如果是整数的话会有小数位,
“0.00”是整数的情况下会有小数位, 其它没有区别
注意:此方法获取小数位时:采用的四舍五入、
Js中保留小数位:c.toFixed(2);此处保留两位小数
Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算:BigDecimal
BigDecimal b1 = new BigDecimal(1);//构造函数传值
BigDecimal b2= new BigDecimal(3);
b1.add(b2);//相加方法
b1.subtract(b2);//相减方法
b1.multiply(b2);//相乘方法
b1.divide(b2,20,BigDecimal.ROUND_HALF_EVEN);//相除方法 20位有效位
23、面向对象:
1、全局变量可以不用赋初值
基础数据类型会有各自的默认值,分装数据类型的默认值为null
2、静态方法只能掉静态的成员(静态属性+静态方法)
非静态方法即可调静态成员,也可调非静态成员
3、静态方法,静态属性等是属于类的东西,不能用this等实例化的对象去调,只能通过类去调(单例设计模式里面他们都是被挂载在类上面的)
父类被final修饰的方法不能被覆盖,但是可以被调用
4、重载:方法名相同,参数列表不同,于其它任何无关。
构造函数一般用来给成员变量赋值,可以重载
5、jdk1.5之后增加了动态参数
动态参数:动态参数一般用于同一数据类型,如果数据类型不同 就用Object类型,有多个参数是,动态参数放在最后。
public static void get(Object... params) {
for (Object object : params) {
System.out.println(object);}}
public static void main(String[] args) {
Donparams.get("柳翰林", 26, 3, 555, 98);
}
6、程序的执行顺序,静态代码块>代码块>构造函数>普通代码
7、访问修饰符:public proceted default private
Proceted:在存在继承关系时才可访问(同包、不同包均可)。
Default:只有在同包中可以访问。
8、重写(覆盖),super只有在存在继承关系的基础上存在的
子类覆盖父类的方法访问修饰符必须大于等于父类被覆盖的方法
子类覆盖父类的方法可以被重载
9、抽象类:用abstract修饰的类
抽象类中可以没有抽象方法,但是有抽象方法的类一定是抽象类
抽象方法:作用就是强迫子类一定要去覆盖的部分
抽象方法只有定义,没有自我实现。
抽象类不能被实例化对象,但是可以定义构造方法
抽象类是多态的最佳体现,接口是多态的完美体现
抽象方法必须定义在抽象类和接口中
Final修饰的方法不能被覆盖
10、接口
接口里面的方法都是抽象方法,但是抽象关键字被处理,默认不 写
接口里面允许有静态方法+默认方法(default)修饰的方法 ( jdk1.8新增)
接口里面的访问修饰符只能用public和default
接口里面没有构造函数,抽象类里面有
11、内部类:
.成员内部类
.静态内部类
.方法内部类
.匿名内部类
Java_se易忘点总结
1、java jdk1.7版本以上都支持变量接收二进制
以0b或者0B开头代表二进制
八进制:0开头
十六进制:0x开头
2、基本数据类型分类:
整数型:byte(1字节),short(2),int(4),long(8)
浮点型:float(4字节),double(8)
字符型:char(2)
布尔型:beelean(1)
3、Float和long定义变量时必须加f/l
Example:Float f = 23f Long l = 123l;
浮点型默认为double
4、Java变量的命名规则:以字母, _ ,$开头,其它随意(java、关键字和特殊符号除外,中间不能有空格)。
5、‘0’==48 ‘A’==65 ‘a’==97 理解为数字一样的东西
任何数据类型都是先转换为10进制,然后转为二进制交付JVM处理。
6、 Char类型和int类型相互转换
7、 (char)100 (int)‘a’
8、 数据类型的转换规则:从大到小:强制转换
int num = 100; short num2 = (int)num;
从小到大:自动转换
9、 int indexnum = String.valueOf(ch).getBytes("utf-8").length; 一个中文utf-8编码下 长度为3
10、.equals() ==
.equals()同一数据类型的比较
== 基础数据类型比较,值相等都为true
Javascript中==比较值,===比较值+地址
11、拆箱/装箱
封装数据类型和基本数据类型之间的转换
开发中应用于数据类型和字符串之间的关系
ValueOf()转换为封装数据类型
parseInt()转换为基本数据类型
form表单传递给后台的数据都是字符串类型的
java的数字进制都是10进制
12、整数相除一定要用float接收,才可以得到你想要的结果。
比如:1/3 得到的结果是0
开发中一般用于计算百分比
正确的计算方法 float f = 1/3(float);
这里注意:1、必须用float接收
2、除数和被除数必须有一方要转为float类型
12、整数相除中分母不能为0,如果在除数和被除数中有一方为浮点型结果必为浮点型,浮点型/0结果为infinity
-浮点型/0=-infinity(负无穷数)
5%0.0结果为:NaN 5%0报错分母不能为0
%:在开发中用于倒计时等
理解:如果一个秒数%60、永远介于0-60之间
13、Css|js文件的外部引入格式
<link type=”text/css” rel=”stylesheet”
href=”main.css”>
<script type=”text/javascript” src=”main.js” >
</script>
14、str.startwith(x); 排断是否以x开头
Str.endwith(x);排断是否以x结尾
应用数据类型的默认值:null
Equals()方法 :数据类型相同,值相同的情况下才为true
15、相同的分装数据类型
在-128-127内都为true 超过范围为false
因为-128-127的取值范围在缓存里面被存储了
16、断点调试:
F8:跳跃断点(从目前断点调到下一个断点)
F6:逐行执行
F5L进入方法
17、数组提供了一个工具类:Arrays
可以用来进行数组和集合之间的转换
String arr[] = {"3232","fdfasd","发"};
List<String> list = Arrays.asList(arr);
Object aa[] = list.toArray();
for (Object object : aa) {
System.out.print(object+"\t");
}
18、算法;java中:冒泡算法,快速算法,递归算法,归并算法
JS中:寻路算法,背包算法,螺纹算法
19、集合:
Set集合:无序,不允许重复,因为他的底层是hashcode实现的(维护),允许存储空值。
Treeset:利用二叉树(红黑树)算法来维护元素的顺序,其内置了一个排序器,默认排序
Hashset:在未来开发中,若有过滤和去重等的要求,可以考虑使用hashset
集合+数组相互转换:
String arr[] = {"3232","fdfasd","发"};
List<String> list = Arrays.asList(arr);
Object aa[] = list.toArray();
20、对象:
两个对象相同:一hashcode相同,二、equals相等
每个对象对应都有一个hashcode值,
21、lam表达式:针对集合才有的(jdk1.8新增内容)
遍历集合:list.forEach(num->System.out.println(num));
遍历对象:list.forEach(stu->System.out.println(stu.getname());
list.removeIf(num->条件);符合条件的会被删掉
Js中 splice(sindex,nums,替换的值):nums是替换的个数
Js: Splice(sindex,nums)sindex:从那里开始nums剪切的个数
22、Math方法
取整:Math.round(); 向上取整;
Math.floor();向下取整
以上两种方式都不能保留小数位
double d = 21.52654d;
String cc = new DecimalFormat("#.####").format(d);
“#.##”如果是整数的话会有小数位,
“0.00”是整数的情况下会有小数位, 其它没有区别
注意:此方法获取小数位时:采用的四舍五入、
Js中保留小数位:c.toFixed(2);此处保留两位小数
Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算:BigDecimal
BigDecimal b1 = new BigDecimal(1);//构造函数传值
BigDecimal b2= new BigDecimal(3);
b1.add(b2);//相加方法
b1.subtract(b2);//相减方法
b1.multiply(b2);//相乘方法
b1.divide(b2,20,BigDecimal.ROUND_HALF_EVEN);//相除方法 20位有效位
23、面向对象:
1、全局变量可以不用赋初值
基础数据类型会有各自的默认值,分装数据类型的默认值为null
2、静态方法只能掉静态的成员(静态属性+静态方法)
非静态方法即可调静态成员,也可调非静态成员
3、静态方法,静态属性等是属于类的东西,不能用this等实例化的对象去调,只能通过类去调(单例设计模式里面他们都是被挂载在类上面的)
父类被final修饰的方法不能被覆盖,但是可以被调用
4、重载:方法名相同,参数列表不同,于其它任何无关。
构造函数一般用来给成员变量赋值,可以重载
5、jdk1.5之后增加了动态参数
动态参数:动态参数一般用于同一数据类型,如果数据类型不同 就用Object类型,有多个参数是,动态参数放在最后。 - 如果编译时的类型和运行时的类型不一致的时候,就出现了所谓的多态。
public static void get(Object... params) {
for (Object object : params) {
System.out.println(object);}}
public static void main(String[] args) {
Donparams.get("柳翰林", 26, 3, 555, 98);
}
6、程序的执行顺序,静态代码块>代码块>构造函数>普通代码
7、访问修饰符:public proceted default private
Proceted:在存在继承关系时才可访问(同包、不同包均可)。
Default:只有在同包中可以访问。
8、重写(覆盖),super只有在存在继承关系的基础上存在的
子类覆盖父类的方法访问修饰符必须大于等于父类被覆盖的方法
子类覆盖父类的方法可以被重载 - 父类被final修饰的方法不能被覆盖,但是可以被调用
- 9、抽象类:用abstract修饰的类
抽象类中可以没有抽象方法,但是有抽象方法的类一定是抽象类
抽象方法:作用就是强迫子类一定要去覆盖的部分
抽象方法只有定义,没有自我实现。
抽象类不能被实例化对象,但是可以定义构造方法
抽象类是多态的最佳体现,接口是多态的完美体现
抽象方法必须定义在抽象类和接口中
Final修饰的方法不能被覆盖
10、接口
接口里面的方法都是抽象方法,但是抽象关键字被处理,默认不写
接口里面允许有静态方法+默认方法(default)修饰的方法 ( jdk1.8新增)
接口里面的访问修饰符只能用public和default
接口里面没有构造函数,抽象类里面有 - 接口可以继承接口,是系统可插拔的保证。
- 11、内部类:
.成员内部类
.静态内部类
.方法内部类
.匿名内部类
12、反射:
创建对象的一种方式,动态修改jvm中的成员
Class cla = Class.forName ("lhl.in.out.MyBuffer" );
动态解析Class文件中的构造函数,成员变量,成员方法
13、泛型:
不能再静态成员上使用泛型类型
泛型中的数据类型一定是封装数据类型。
所谓泛型-就是允许在定义类,接口,方法时使用类型形参,这个类型形参将在声明变量,创建对 象,调用方法时动态的指明.
14、枚举类:
public Enum weekEnum{
monday,
friday,
sunday;
}
枚举类:1>是一种特殊的类,它可以定义成员变量,成员方法,可以实现一个或者多个接口
由于其不能实例化,所以只能定义自己(私有)的构造器
枚举类的属性间一逗号隔开
2>不能继承具体类和抽象类,必须通过Valueof实现具体的对象
3>自定义的枚举类,其父类是Eunm,而不是Object
Enum e = Enum.valueOf(cla, "xxx");
15、IO:
输入流 输出流
字节流: FileoutputStream FileinputStraem
字符流: InputStreamReader OutputStreamWrite[可以设置编码格式]
缓冲流: BufferReader BufferWriter
File file = new File("e://download");
File file = new File(file,"a.jpg")
IO中最为丰富的一个流:RandomAccssFile ran = new RandomAccessFile (new File(""), "" );
NIO:new io
新的Io和传统的 Io有相同的目的,都是用来进入输入和输出的,但是新的IO使用了不同的方式来处理输入和输出。新IO采用内存映射文件的方式来处理输入和输出,
新IO将文件或文件的一段区域映射到内存中,这样就可以像访问内存一样来访问文件,通过这个访问文件比传统的Io要快得多。
2:java.nio相关的包:
a:java.nio包:主要包含各种与Buffer相关的类。
b:java.nio.channels包:主要包含各种与Channel和Selector相关的类。
c:java.nio.charset:主要包含与字符集相关的类
d:java.nio.channels.spi:主要包含与Channel相关的服务提供者编程接口。
e:java.nio.charset.spi:主要包含与字符集相关的服务提供者编程接口。
3: Channel通道和Buffer缓冲是 Nio中的两个核心对象,Channel是对传统IO的模拟。所有的NIO系统中所有的数据都需要通过通道传输,Channel与传统的InputStream和OutputStream
Buffer可以被理解成一个容器,它的本质是一个数组,发送数据到Channel中的所有对象都必须首先放到Buffer中,而从Channel中读取的数据也必须向放到Buffer中。
16、异常:编译时异常+运行时异常
编译时异常:io,sql,反射
运行时异常:
17:jsoup:文件解析/xml文件解释【重点】
18、json 、Bean、Map相互转换
1、首先定义一个类,定义私有属性,生成get、set方法。
2、创建属性类的对象,将值set进去
3、Map<String, String> map = BeanUtils.describe (person );//Bean转换为map
4、
public static <T>T map2Bean(Map<String, String> map,Class<T>class1 ){
T bean = null;
try {
bean = class1.newInstance();
BeanUtils. populate(bean, map);
} catch (InstantiationException|InvocationTargetException|IllegalAccessException e) {
e.printStackTrace();
} return bean ;
}
5、Person pp = map2Bean( map, Person.class);//Map转为Bean
System.out.println( pp.getName());
[备注:有Date类型的时候需要先注册下]
必须导入:commons-beanutils-1.9.2.jar;commons-logging-1.2.jar包
struts2-json-plugin-2.3.15.1.jar(喜欢用) 是对 json-lib-2.3-jdk15.jar【谷歌】的封装
Bean转json: String jsonstring = JSONUtil.serialize (person );[需要javaee包或者web环境下]
map转json: String jsonstring = JSONUtil.serialize (map )此处的map可以是任何对象/Object
JSONUtil有个反序列化:
JSON转map
Map<String,String> mm = (Map<String, String>)JSONUtil.deserialize(jsonstring );
json参与转换的时候必须导入:
19、StringBuffer、StringBuffer为了弥补String的缺陷而出现的,不会产生垃圾数据
StringBuffer:线程安全的,消耗内存比较大
StringBuilder:非线程安全的,消耗内存小【开发中常用】
20、日期类Date:
日历类:抽象类【开发中常用】
关于日期封装的两个工具jar包:
joda-time-1.6.2.jar date4j.jar
- 21、网络编程:
22、在封装数据库里面一般用Bean get set 但是有特殊情况下:用Map讲数据库查询的值存储起来
然后再用集合返回。
23、jstl遍历list/map list里面包含map的情况
文件头需要引入:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
${map.key} === ${map.value}
${map["key"]} ======${map["value"]}
<c:forEach items = "${lists}" var = "list">
<c:forEach items = "${list}" var = "map">
<!-- ${map["key"]} ======${map["value"]} 注释 -->
${map["key"]} ======${map["value"]}
</c:forEach >
</c:forEach >
24、
以上是关于JavaSe的主要内容,如果未能解决你的问题,请参考以下文章