一.Java基础
基本语法,面向对象,异常,常用类
一.Java基本语法
1.
JavaSE:java最核心的类库,如:集合,IO,数据库连接,网络编程
JavaEE:Servlet,JSP,JavaBean,EJB,Web Service
2.java语言特点
面向对象,夸平台。解释性,安全性。简单性,支持多线程
3.JDK,JRE
JDK用于开发,JRE用于运行
JVM负责解释执行
4.java运行机制
(1)java程序运行,必须经过编译和运行两个步骤
编译器 解析器
原代码------->.class文件------>二进制机器码-->计算机
(2)java跨平台:一次编写,到处运行
java跨平台就是.class文件跨平台,但java虚拟机不是跨平台的,不同的操作系统需要使用不同的java虚拟机
5.java类库
基础类库:java包及其子包
扩展类库:javax包及其子包
java包下的常用包:
(1)java.lang 包含java中的基本类(包装类,String,Object)
(2)java.util包含大量工具类,集合类,如:Arrays,List,Set
(3)java.io 包含java输入,输出相关类和接口
(4)java.net 包含java网络编程相关类和接口
(5)java.sql 数据库编程
6.java数据类型:
基本数据类型:四类八种(整数型,浮点数型,字符型,布尔型)
引用数据类型:类,接口,数组,枚举(enum),注解(Annotation)
7.类型转换:自动类型转换(隐式),强制类型转换(显式)
(1)eclipse中出现的波浪线,框就是程序编译时异常
(2)类型转换异常:编译时异常 运行时异常(可以引入泛型避免ClassCast异常)
自动类型提升:用+=
8.变量的定义:声明,赋值
常量(字面量):包括:整形常量,浮点型常量,字符常量,布尔常量。字符串常量,NULL常量
9.运算符:
&:按位与,逻辑与
&&:短路与 |和||同理
10.
选择语句(条件语句):
switch:与if不同的是switch的控制表达式结果类型只能是:int,enum,String。不能是boolean类型
循环语句:
break和continue都是跳转语句,但:
break:跳出当前循环,执行后面的代码
continue:跳出本次循环,执行下一次循环
11.数组的常见操作
数组遍历,数组最值,数组排序
二.面向对象
1.
(1)面向对象四特性:抽风极多
(2)java内存分为两种:
栈内存:存放局部变量:基本类型变量和引用数据类型的引用
堆内存:存放由new创建的对象和数组
2.
this:指代当前对象
super:指代父类对象
3.类的继承
Animal(name,shout(“动物发出叫声”))
Dog(name,shout(“汪汪汪”)) Cat(name,shout(“喵喵喵”))
4.Object类的方法:
equals()
getClass()
hashCode()返回该对象的哈希码值。这个方法将对象的内存地址进行哈希运算,返回一个int类型的哈希值
toString()
finalize()
5.常量:final修饰的变量就是常量,被赋值后不能改变
6.抽象类和接口
抽象方法:用abstract修饰,没有方法体
抽象类:用abstract修饰的类。一个抽象类可以包含抽象方法,也可以不包含抽象方法
接口:特殊的抽象类。
jdk8之前:所有方法都是抽象方法,不能包含普通方法
jdk8:除了抽象方法外,还可以有默认方法和静态方法(类方法)。 这两种方法可以有方法体
接口内可以定义常量(默认是:public static final 常量),必须初始化赋值
接口中抽象方法可以省略public abstract,默认添加
接口中包含三类方法:抽象方法,默认方法,静态方法
通过接口实现类的实例化对象可以访问:接口中的常量,接口实现方法,默认方法。而静态方法可以直接使用接口名.方法名调用
7.多态
(1)
是指相同引用类型变量在调用同一方法时所呈现出的不同形态。(相同引用类型变量可以指向不同实例对象)
靠的是:父类的引用变量可以指向子类的实例对象,
而程序调用的方法在运行期才动态绑定具体实例对象的方法
(2)多态性的前提:类的继承,方法重写
程序只有在运行时才能知道具体代表的是哪个子类对象(因为在编译时还没有创建对象,所以不知道是哪个)(编译期看起来调用的是父类对象的方法)
(3)向上转型:子类对象被当做父类对象使用 不需要任何显示声明
但不能通过父类变量去调用子类特有的方法(在编译期就会报错)
向下转型:如果要调用特有方法,可以向下转型。
但必须转换为本质类型,否则转换时会出现错误(在运行期出错:ClassCastException)
8.内部类:成员内部类,静态内部类,局部内部类,匿名内部类
成员内部类:成员变量,成员方法,成员内部类
局部内部类:(方法内部类)和局部变量一样,在方法内
静态内部类:static修饰的成员内部类
匿名内部类:当方法参数是接口类型时,可以使用匿名内部类实现接口作为方法的参数
new Animal() { }
9.Lambda表达式
Lambda表达式就是一个匿名内部类,可以简洁的实现一个接口中的方法实现
(参数列表)——>{方法体}
函数式接口才可以使用Lambda表达式
四.异常
1.Error:系统错误。程序本身不能处理
Exception:程序异常。程序本身可以处理
java开发中的异常处理,都是针对Exception及其子类的
2.运行时异常一般是由于程序中的逻辑错误引起的
3.异常处理的两种方式
(1)异常捕获:使用try...catch语句对异常进行捕获处理
(2)异常抛出:使用throws关键字声明抛出异常,让调用者对其处理
垃圾回收
五.java常用类
1.包装类
(1)自动装箱,自动拆箱:基本数据类型变量<------->引用数据类型变量
(2)方法:
包装类都有valueOf(String s)静态方法,将字符串---->包装类对象(除了Character)
包装类都有parseXxx(String s)静态方法,将字符串---->基本类型的值(除了Character)
2.String与StringBuffer
String类:
初始化:(1)String str=“hello”;(2)String str=new String(“hello”)
如果+两边有一个是String类型,那么+表示字符串连接运算
常见操作:
(1)基本操作:
字符串长度:length()
指定位置的字符:charAt()
字符或字符串的索引:indexOf(),lastIndexOf()
(2)字符串的转化操作:
转换成字符数组:toCharArray()
将int值转换成字符串:vlaueOf()
大小写转换:toUpperCase()
(3)替换与去除空格操作
replace(),trim()
(4)判断操作
str.startWith("St"),str.endWith("er"),str.contains("ar"),str.isEmpty(),str.equals(s2)
(5)截取与分割
str.subString(5),str.subString(5,7),str.split(" ")
StringBuffer类:
添加:
sb.append("abc"),sb.insert(3,"de")
删除:
sb.delete(3,7),sb.deleteCharAt(2),
修改:
sb.setCharAt(2,'c'),sb.replace(3,5,'de')
3.Math与Random
Math:
Math.ceil() 向上取整
Math.floor() 向下取整
Math.round() 加0.5向下取整
Math.random()
Random:在指定的范围内随机产生数字
4.System与Runtime
System 虚拟机系统相关
Runtime 虚拟机运行时状态相关
5.日期时间类
(1)Date类和Calendar类
Date不常用了,两个功能:获取当前日期时间,时间戳
Calendar:getInstance()获得当前时间的Calendar对象
get(),add(),set()
Calendar.MONTH()字段,0~11,因此获取当前月份要加1
(2)JDK8的日期时间类
6.格式化类。日期、时间格式器
DateFormat,SImpleDateFormat,DateTimeFormatter
补充:
1.switch条件语句
switch中的break作用是跳出switch语句