javaSE
1.基础语法
public class a{
public static void main (string[] args){
print(“xx”);
}
}
java大小写敏感
尽量使用英文
文件名类名保持一致且首字母大写
1.1注释&标识符&关键字
1.1.1注释
单行注释 //
多行注释 /* */
文档注释 /** */
1.1.2标识符
1.1.3关键字
1.2数据类型
1.2.1基本类型
1.1整数型
jdk7后数字间可加下划线
1.2浮点型
1.3字符型
1.2.2引用类型
1.1类
1.2接口
1.3数组
1.3类型转换
不能转换布尔值
不能转换为不相干的
转换时可能内存溢出或者精度出现问题
1.1强制转换
高—>低
system.out.println((int)啊)
1.2自动转换
低—>高
1.4变量
Java为强类型语言,每个变量都需声明类型
1.1定义
变量类型 变量名=值;
1.2类变量
首字母小写和驼峰原则
ps:驼峰原则:除第一个单词外,后面的单词首字母大写,warAlert
1.3实例变量
从属于对象
若不自行初始化,为其类型默认值,布尔值为false
1.4局部变量
首字母小写和驼峰原则
必须声明和初始化值
1.5常量
大写字母和下划线
final //定义
1.6类名
首字母大写和驼峰原则
1.7方法名
首字母小写和驼峰原则
1.5修饰符
不区分前后
1.6运算符
优先级()
1.1算数运算符
+,-,*,/,%,++,–
1.2赋值运算符
=
1.3关系运算符
>,<,>=,<=,==,!=
1.4逻辑运算符
&&,||,!
短路运算
与运算前面错误不会执行后面
1.5位运算符
&,|,^,~
>> // /2
<< // *2
>>>
1.6条件运算符
?:
1.7扩展赋值运算符
+=,-=,*=,/=
1.7连接符
1.8javadoc
2.编译型&解释型
1.1编译型
先编译(*.class)
1.1.1反编译
1.2解释性
后解释
3.语句
1.1scanner对象
通过scanner类来获取用户输入
1.1.1基本语法
Scanner s = new Scanner(System.in);
1.1.2next()&nextLine()
next():
- 一定要读取到有效字符后才可以结束输入
- 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
- 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
- next()不能得到带有空格的字符串
nextLine():
- 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符
- 可以获得空白
1.2顺序结构
正常语句依次执行
1.3选择结构
1.3.1if语句
1.3.2if else语句
1.3.3if else if语句
1.3.4if嵌套
1.3.5switch case语句
jdk7后可比较string
string仍为数字,转为数字后进行比较
case //穿透,若没有跳出循环则一直顺序
switch ©{
case ‘x’:
}
1.4循环结构
1.4.1while循环
while(ture) //死循环,避免
while先判断后执行
1.4.2do while循环
do while先执行后判断,所以会保证执行一次
1.4.3for循环
for(初始化;条件;迭代)
1.4.4增强for循环
int[] number = {10,20,30,40,50}; //定义数组
for (int x:numbers){
system.out.println(x);
}
1.5break&coutinue
1.5.1break
跳出循环
1.5.2coutinue
跳过循环体后面,继续循环
4.包机制
文件夹
一般利用公司域名倒置作为包名
1.1语法格式
package pkg1[. pkg2[. pkg3…]];
1.2导入包
import package[.package2…].(classname|*);
5.方法
1.1定义&调用
修饰符 返回值类型 方法名(参数类型 参数名){
…
方法体
…
return 返回值;
}
方法包含一个方法头和一个方法体
1.1.1修饰符
修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型
1.1.2返回值类型
方法可能会返回值。returnValueType是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType是关键字void
1.1.3方法名
是方法的实际名称。方法名和参数表共同构成方法签名
1.1.4参数类型
参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型,顺序和参数的个数。参数是可选的,方法可以不包含任何参数
- 形式参数:在方法被调用时用于接收外界输入的数据
- 实参:调用方法时实际传给方法的数据
1.1.5方法体
方法体包含具体的语句,定义该方法的功能
1.1.6return
终止方法
1.1.7调用
调用方法:对象名.方法名(实参列表)
如果方法返回值时void,方法调用一定是一条语句
1.2方法的重载
1.2.1定义
重载就是在一个类中,有相同的函数名称,但形参不同的函数
1.2.2规则
- 方法名必须相同
- 参数列表必须不同(个数不同,或类型不同,参数排列顺序不同等)
- 方法的返回类型可以相同也可以不相同
- 仅仅返回类型不同不足以成为方法的重载
1.2.3实现
方法名称相同时,编译器会根据调用方法的参数个数,参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错
1.3命令行传参
1.4可变参数
必须放在最后面
1.5递归
自己调用自己
1.5.1递归结构
- 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环
- 递归体:社么时候需要调用自身方法
1.6数组
1.1定义
相同类型数据的有序集合
1.2特点
- 长度是确定的。数组一旦被创建,大小则不可被改变
- 其元素必须是相同类型,不允许出现混合类型
- 数组中的元素可以是任何数据类型,包括基本类型和引用类型
- 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。数组本身就是对象,java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身就是在堆中的
1.3创建声明
获取数组长度 //arrays.length
1.4使用
- for循环
- for-each循环
- 数组作方法入参
- 数组作返回值
1.5多维数组
数组嵌套
1.6内存分析
声明数组,赋值
1.6.1堆
数组空间在堆中开辟,赋予值
1.6.2栈
数组名存入栈
1.7初始化
1.7.1静态初始化
创建+赋值
1.7.2动态初始化
自己去后期赋值
1.7.3默认初始化
1.8数组边界
ArrayIndexOutOfBoundsException //数组下标越界异常
1.7面向对象
1.1本质
以类的方式组织代码,以对象的组织(封装)数据
抽象
1.2特性
1.2.1封装
高内聚(类的内部数据操作细节自己完成,不允许外部干涉),低耦合(仅暴露少量方法给外部使用)
该露的露,该藏得藏
数据的隐藏,通过结合口来访问 //信息隐藏
属性私有 get(获取)/set(设置值)
1.2.2继承
本质 //对某一批类的抽象,从而实现对现实世界更好的建模
扩展 //extands,子类是父类的扩展
java类中只有单继承,没有多继承
-
继承是类和类之间的一种关系,除此之外,类和类的关系还有以来,组合,聚合等关系
-
继承关系的两个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extends来表示
-
子类与父类之间的关系,从意义上将应该具有is a的关系
-
object类
-
super
对比:
this
//本身调用这个对象
//没有被继承也可以使用
//本类的构造
super
//代表父类对象的应用
//只能在继承条件下使用
//父类的构 你造
隐藏代码:调用父类的无参
调用父类构造器,必须要在子类第一行
- 方法重写
子类方法要和父类一致:方法体不同
需要有继承关系
子类重写父类
只和非静态有关
静态 //方法的调用只和定义的数据类型有关
- 方法名必须相同
- 参数列表必须相同
- 修饰符,范围可以扩大不可以缩小 //public>protected>default>private
- 抛出的异常,范围,可以缩小但不能扩大
父类的功能,子类不一定需要,或者不一定可以满足
1.2.3多态
动态编译:类型
一个对象的实际类型是确定的,但可以指向的引用不确定 //父类的引用指向子类
同一个方法可以根据发送对象的不同而采用多种不同的行为方式
一个对象的实际类型是确定的,但是可以指向对象的引用的类型有很多
多态存在的条件
- 有继承关系
- 子类重写父类方法
- 父类引用指向子类对象
注意:多态是方法的多态,属性没有多态性
- 多态是方法的多态,属性没有多态
- 父类和子类,有联系
- 存在条件:继承关系,方法需要重写,父类引用指向子类对象
instanceof
子类转父类可能丢失方法
父类引用指向子类对象
把子类转换为父类,向上转型
把父类转换为子类,向下转型,强制转换
方便方法的调用,减少重复代码
1.3类
- 静态的属性 //属性
- 动态的行为 //方法
类是抽象的需要实例化
实例化后返回一个对象
属性:字段
方法
一个类什么都不写也会存在一个构造方法 //构造器
单继承
私有 //private
1.3.1抽象类
抽象类 //abstract,用在方法上,抽象方法
抽象类的所有方法,继承了他的子类,都必须要实现他的方法
- 不能new,只能子类实现 //约束
- 抽象类中可以写普通的方法
- 抽象方法必须在抽象类中
1.3.1内部类
获得外部类的私有属性
静态内部类
局部内部类
没有名字初始化类,不用将实例保存到变量中
1.4创建&初始化对象
1.4.1创建对象
具体
使用new关键字创建对象
1.4.2构造器
构造方法
用来初始化值
alt + insert //生成构造器
使用new关键字,必须要有构造器 //本质是在调用构造器
1.1有参构造
一旦定义了有参构造,无参就必须显示定义
1.1特点
- 必须和类的名字相同
- 必须没有返回类型,也不能写void
1.5接口
interface
规范
接口的本质是契约
接口中的所有定义都是灰色的
类可以实现接口
实现了接口的类,就需要重写接口的方法
接口实现多继承
接口中定义的属性都是常量
1.5.1作用
- 约束
- 定义方法
- public abstract
- public static fianl
- 接口不能实例化,接口中没有构造方法
- implements可以实现多个接口
- 必须要重写接口中的方法
1.6异常
exception
检查性异常
运行时异常 //RuntimeException
错误 //error,不属于异常
1.6.1异常处理机制
try
catch //捕获异常
finally //处理善后,可以不加
异常关键字
- throw
- throws
- catch
- finally
- try
自定义异常