JavaSE基础浅谈

Java开发环境

JVM:Java虚拟机,用于与操作系统交互。(可以理解为翻译官)
JRE:Java运行环境,包含JVM和Java核心类库
JDK:Java开发工具,包含JRE和Java开发工具集
三者关系:JDK包含JRE,JRE包含JVM

Java开发步骤

1.编写: .java 源文件
2.编译:通过javac将 .java源文件 编译为一个或多个 .class字节码文件
3.运行:通过 Java 命令进行运行,将一个或多个 .class 字节码文件加载到内存中
注意
1.一个 .java 源文件可以包含多个类,但只能有一个public修饰的类且源文件只能与该类同名
2.一个程序只能有一个main()方法,是程序的入口
3.每条语句以 ;结尾
4.严格区分大小写

Java基础语法

标识符:凡是自己命名的地方都叫标识符,理解为一个名字
命名规则:只能用字母,数字,$ 和 _
命名规范:
1.包名全小写
2.变量名和方法名第二个单词首字母大写
3.类和接口名每个单词首字母大写
4.常量名全小写
5.要做到见名知意
变量:一个容器,用于存储一个数据,数据可以变化
概念:内存中的一个区域,该区域有变量名,变量类型,变量存储的数据
分类:成员变量(类中,方法外),局部变量(方法内)
作用域:一对 { } 之中
数据类型
基本数据类型:byte,short,int,long,float,double,char,boolean
引用数据类型:类( String在这里,声明String变量时,必须使用双引号),数组,接口
算数运算符理解++ 和 – ,前++是调用变量前+1,后++是调用完变量后+1
逻辑运算符 理解短路与 && 和短路或 || 一边的条件满足后就不再判断另一个,减少运算次数
if - else 整体是一个表达式,可以嵌套
switch - case 几乎不用
流程控制
顺序结构:程序从上到下逐行地执行,中间没有任何判断和跳转。
分支结构:根据条件,选择性地执行某段代码。
​ 有if…else和switch两种分支语句。
循环结构:根据循环条件,重复性的执行某段代码。
​ 有while、do…while、for三种循环语句。
特殊流程控制
break :用于跳出当前循环体
continue :用于跳出当次循环
方法
格式: 修饰符 返回值类型 方法名(参数列表){
程序代码
return 返回值 //return用于结束当前方法
}
可变参数: 数据类型 … arr
在同一个类中,方法可以重载
1、方法名相同
2、参数列表不同(参数的个数、参数的类型、参数的顺序)
注意:与返回值类型无关

面向对象

Java是面向对象编程,就是将属性和方法封装进对象中,我们直接调用对象类实现某些功能即可
因此Java编程就是设计 class,就是设计类的属性和方法
class :生活中一类事物共性内容的抽象
对象:通过new关键字创建,是class的实例化 对象名是一个地址值,带领JVM找到具体对象
理解类和对象
类:抽象的,描述的是现实生活中的一类事物 比如汽车
对象:是一个实实在在的个体 品牌劳斯莱斯,高配,手自一体…的汽车
**封装:**将属性私有化,提供公共的get/set方法来获取更改属性值
this关键字:代表当前对象,谁让拥有this关键字的方法运行,谁就是当前对象
构造器
作用:创建和初始化对象
定义格式
public 类名(参数列表){
功能语句
}
注意:
①构造器的名称必须与类名保持一致!
②若一个类中没有显示的声明任何构造器时,系统会提供一个默认的无参的构造器
public Person(){}
③若一个类中显示的提供了任何构造器时,系统默认的无参构造器将不再提供
④构造器没有返回值(所以不需要返回值类型),也不需要 return
⑤构造器之间可以构成重载
构造器的重载:
在同一个类中
①构造器名称相同
②参数列表不同(参数个数、参数类型、参数顺序)

数组

作用:批量保存一类数据,是引用数据类型之一
注:
①无论静态初始化还是动态初始化,必须指明长度
②数组中每个元素的位置都有一个索引值,索引值从0开始,到数组的长度 - 1
③获取数组长度:数组名.length
声明:数组类型 [] 数组名;//数组名也是一个地址值
数据初始化: ①方式一:静态初始化,初始化操作和赋值操作同时进行
②方式二:动态初始化,初始化操作和赋值操作分开进行
数组的遍历:增强for循环
for(数组元素的数据类型 变量名:要遍历的数组名){

}
二维数组

对象的关联

将一个对象设置为另一个对象的属性,这样就将两个对象关联到了一起

继承

B extends A
A称为父类,B称为子类
注:
1.继承是说子类是父类的扩展
2.继承要满足 is a 的关系
3.提高代码的复用性
4.单继承
方法的重写override:当父类中的功能对于子类来说不适用时,子类可以对父类中的方法进行重写,重写一般情况下方法签名一样
super 关键字:和 this 关键字使用方式一模一样
super.属性
super.方法
super(……) : 调用父类构造器
this:使用在本类中,代表当前对象的引用
super:使用在子类中,代表父类对象的引用

多态

定义:一种事物的多种表现形态 人–>男人 , 女人
态的体现:方法,属性不具有多态性
方法的多态:方法的重载和重写
对象的多态:父类的引用指向子类的对象 //子类看做特殊的父类
应用:多态数组、多态参数

两个重要方法

1.toString 将对象转换为指定的字符串形式,输入对象的引用时自动调用toString方法
2.equals 用于比较引用数据类型,比较两个对象的地址值是否一样来判断是否是一个对象
两个方法都来自Object类,可以重写来自定义具体方法体

抽象类

abstract 关键字定义修饰抽象类,抽象方法
抽象类:拥有抽象方法的类为抽象类,抽象类不能创建实例
抽象方法:由abstract修饰的方法为抽象方法,只提供方法的声明,不提供具体的实现而是交给子类重写去实现

接口 interface

可以把接口理解为特殊的抽象类,因为接口中只能有“全局静态常量”和“抽象方法”
注:
1.接口不能创建实例,但可以多态
2.接口用implement关键字来实现
3.可以的多实现
理解抽象类和接口:
抽象类当作一个模板
接口当作一个标准

内部类

理解匿名内部类
格式:new 类名(){
内部类的代码
}

包装类

利用包装类将基本数据视为对象进行处理
Java 为八种基本数据类型提供了对应的包装类,意味着可以创建对应的对象与使用对应类的各种方法,使用起来方便

String类

不可变的字符序列**,双引号引起来的都存在常量池

异常

处理方式:
1.try{
可能发生异常的代码
} catch(异常类型 e){
//异常处理语句
//比如:
printStackTrace() : 打印异常的详细(堆栈)信息
​ getMessage() : 获取异常的描述信息
} finall {
最后执行的语句
}
注意:
①catch 块可以有多个,若 catch 块中的异常类型具有子父类关系,必须子上父下
②catch 块可以有多个,一旦某个catch中的异常类型匹配成功,其他 catch 块将不再执行
③try-catch 可以嵌套
2.方法内 throw 制造异常,方法上throws将异常抛出

集合

集合就是一个容器,用于存储,读取,操作对象。
注:集合存储的都是对象的引用
集合的特点:
①集合的长度是可变
②集合可以存储任意类型的对象
③集合只能存储对象
List 集合:有索引值,存储的数据允许重复,有序
set 集合:存储的数据不允许重复,无序
map 集合:存储K-V键值对,一个K对应一个V,K不允许重复

泛型

泛型:在 Java 中以“<>”的形式呈现,“<>” 中写引用数据类型,用于限制数据类型
有了泛型之后,可以自己定义安全的数据类型

属性文件

JavaSE基础浅谈