JavaSE基础知识总结

1. JAVA的应用领域

  • JavaSE:标准版本 桌面应用程序
  • JavaEE:企业版本 解决方案的技术的集合
  • JavaME: 嵌入式 开发 游戏开发
    jdk8下载

Eclipsex下载

达内开发文档服务

2. 配置环境

1) 工作空间

保存java创建的文件的地方叫做工作空间WorkSpace,其实就是个目录

创建D:\java\ws\x目录,不要有中文,不要有空格

手动创建目录,eclipse中选择

2) 配置eclipse环境

  1. 配置字体大小 : preference/fonts/Text Font/edit)
  2. 修改工作空间字符集,默认gbk,修改utf-8(中文乱码) : preferences/workspace/encoding/修改UTF-8
  3. 创建java文件,生成标准作者等参数 : reference/java/code style/templates/code/new java files/edit

3) 配置IDEA环境

  • (IDEA)[]

3.JAVA代码规则

  1. 大小写区分
  2. java中最小程序是类
  3. 程序要有入口方法(具有特定功能的代码)
  4. 语句所有的语句都必须经";"结尾,打印输出的内容要在小括号内.
  5. 字符串必须用双引号引起来("helloworld")
  6. 有层次结构或包含关系,被包含的要换行缩近4格

1) 包的命名

格式 : (域名的反写.项目名称.功能名称)

如 com.kuang.study2020.web

注意:所有的包名都必须小写

2) 标识符

类名,变量以及方法名

  1. 不能使用关键字作为变量名或方法名
  2. 大小写是敏感,区分的

4.变量与常量

1) 变量

在内存中临时开辟的一段存储空间,用来存储数据

变量声明: 数据类型+变量名

变量命名规范:

  1. 驼峰原则 : 由多个单词组成时,从第二个单词开始,每个单词首字母大写
  2. 所有变量,方法,类名:见名知意
  3. 常量(是一种特殊的变量):全部大写,单词下斜线连接
  4. 类名:首字母大写,驼峰原则
  5. 方法名:首字母小写,驼峰原则

2) 常量(constant)

格式:final 常量名 = 值

3) 变量作用域

  1. 类变量,在类里面,方法外。
  2. 实例变量:从属于对象,如果不自行初始化,会是默认值。
    默认值:“布尔值默认为false,基本类型默认为0,其他默认null”
  3. 局部变量:必须声明和初始化值。如int a = 1;

5.数据类型

1) 基本数据类型

名称

中文名称

长度

范围

备注

byte

字节

1byte

-128~-127

存整

short

短整型

2byte

-32768~32767

存整

int

整型

4byte


存整(常用)

long

长整型

8byte

很大

存整(数后加L)

[float](离散的, 接近但不等于)

单精度浮点型

4byte

很大很大

存小数(数后加F)

double

双精度浮点型

8byte

超大

存小数(常用)

char

字符

2byte

0~65535

一个字符

boolean

布尔

1byte

ture/false

存ture/false

2) 引用数据类型

所有的类都是引用数据类型。如(HelloWorld,Demo)

String也是引用类型,String变量定义后不能更改

3) 类型转换

  1. 分为强制转换和自动转换
    强制转换 (数据类型)变量名 高--低 int i = 128; byte b = (byte)i;
    自动转换 低--高 int i1 = 128; double b1 = i;
  2. 不能对布尔值进行转换
  3. 不能把对象类型转换成不相干的类型
  4. 转换的时候存在内存溢出,或者精度问题

4) 进制

二进制:0b开头 八进制:0开头 十六进制:0x开头

6.流程控制

1) 分支结构

① if语句结构
  1. if语句
if(布尔表达式){
	//如果布尔表达式为true将执行的代码
	//if语句可以没有大括号,没有时,仅对紧跟一句有效。
}
  1. if,else语句
if(布尔表达式){
	//如果布尔表达式为true将执行的代码
}  else  {
	//如果布尔表达式为false将执行的代码
}
  1. else,if语句(多分支)
if(布尔表达式1){
	//如果布尔表达式1为true将执行的代码
} else if(布尔表达式2) {
	//如果布尔表达式2的值为true将执行的代码
} else(布尔表达式4) {
	//如果以上布尔表达式都不为true将执行的代码
}
② switch(多分支)语句结构

switch的实现完全可以用elseif替代,但是switch语句写的更加简洁

switch(n),n支持byte、short、int、String、char类型,不支持long

switch更简洁但更死板,case后不能写"<,>"等。

switch(表达式){
	case value(值):
	//语句
	break;
	case value(值):
	//语句
	break;
	defalut :
	//语句
}

2) 循环结构

① while循环
while(布尔表达式){
	//循环内容
}
② do ... while循环(与while循环相似,不同的时会至少执行一次)
do {
	//代码语句
}while(布尔表达式):
③ for循环(常用)
for(初始化;布尔表达式;更新){
	//代码语句
}
④ foreach增强for循环
for (数据类型 a : 数组名){
    //输出a(每个数组的值)
}

死循环常用 while(true){}

3) 退出循环关键字

break; 跳出循环
continue; 跳过本次循环
return; 结束方法

7.方法

1) 方法重载

在一个类中,有 相同的函数名称,但形参不同的函数

重载规则:

  • 方法名必须相同
  • 参数列表必须不同(个数、类型、参数排序 等不同)
  • 方法的返回类型可以相同也可以不相同
  • 仅仅返回类型不同不足以成为方法的重载

2) 可变参数(不定项参数)

规则:

  • 方法声明中,在Java指定参数类型后加一个省略号(...)。
  • 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。
  • 任何普通参数都必须在它之前声明。

3) 递归(A方法调用A方法 自己调用自己)

递归的能力在于用有限的语句来定义对象的无限集合。

深度越大越慢,尽量不用。

4) 方法的调用

static的方法是和类一起加载的,而非静态方法是类实例化之后才存在的

所以静态(static)方法无法直接调用非静态方法。

static方法体内必须有内容

① main方法中调用
  1. 调用静态方法: 类名.方法名
  2. 调用非静态方法: 对象类型 对象名 = new 对象值

8.数组

数组的创建 : int[] 数组名 = new int[数组长度]

赋值 : 数组名[index] = "值";

1) 随机数组:

创建一个数组,将数组里放入随机数

for(int j = 0;j<10;j++) {   
	arr[j] = new Random().nextInt(100);
}Arrays.sort(arr);   //将数组排序。
String[] numbers = (2,6,7,2,8,3)
for(int i = 0;i<numbers.length;i++){
	输出numbers[i]
}

增强for循环
for(int x:数组名){
	输出x(每个数组的值)
}

2) 稀疏数组(稀疏矩阵)

含义: 记录原始数组的有效值。存进新的数组

结构: 行数为有效数字个数,列数为3,第一行存数组大小和有效数字个数


3) 冒泡排序(八大排序之一)

public static void main(String[] args) {
    int[] a = {321,5842,548,12,8421,321,58121,5161};
        int[] s = sort(a);
        System.out.println(Arrays.toString(s));
    }

    public static int[] sort(int [] array){
        int temV ;
        for (int i = 0; i < array.length -1 ; i++) {
            for (int j = 0; j <array.length-1-i ; j++) {
                if (array[j+1]>array[j]){
                    temV = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temV;
                }
            }
        }
        return array;
    }

9.String

  • String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了
  • Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。

1) 字符串拼接

  1. 在大量拼串时,推荐使用StringBuilder.append(),(单线程,无人竞争)
  2. 如果在多线程(抢票),多人同时使用时,程序要进行安全设置,推荐使用StringBuffer
  3. 少量拼串推荐使用String
  4. 在执行效率上,StringBuilder > StringBuffer > String

10.方法 (又称函数,过程)

用于封装一段特定的业务逻辑

静态方法必须有方法体

1) 方法的定义

修饰词   返回值类型  方法名(参数列表){
      方法体                          
}

对象实例和数组存在堆

本地方法栈native

局部变量,方法描述存在栈

11.面向对象

① 概念:

以类的方式组织代码,以对象的方式封装数据

② 规范:

一个项目只能有一个main方法

一个类由属性和方法组成

1) 构造器

① 作用:

  1. 使用new关键字,本质是在调用构造器
  2. 用来初始化值

② 规则:

  1. 和类名相同,没有返回值
  2. 一旦定义了有参构造,无参构造必须显示定义
  3. 子类的构造过程中,必须先调用父类的构造方法
  4. 子类可以在自己的构造方法中使用super(参数列表)调用父类的构造方法
    (1)可以使用this(参数列表)调用自己这个类的其他的构造方法
    调用this的时候也调用了父类的构造方法
    (2)如果调用了super,必须写在子类构造方法的第一行
    (3)this也必须放在第一行,所以this,super在一个构造方法里无法同时出现

③ 用处:

在构造器内加入参数,当new对象时带上参数,可以给new出来的对象赋一些初始化的值

如果对构造方法进行重载的话,就可以根据不同的参数来构造不同初始值的对象

2) 构造代码块

总结:

  1. 构造代码块内初始化和赋值一起进行,出了代码块就会被干掉(int a = 10;)
  2. 构造代码块被执行后类变量被赋值,赋的值一直有效
  3. 只有执行了构造器,构造代码块才会被执行
  4. 构造代码块先于构造器执行

3) 核心思想(封装继承多态)

① 封装(目标 : 高内聚,低耦合)

意义:

  1. 提高程序的安全性,保护数据
  2. 隐藏代码的实现细节
  3. 统一接口
  4. 提高系统的可维护性

② 继承

定义:

  1. 继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合等。
  2. 继承关系的两个类,一个为子类(派生类),一个为父类(基类)。继承父类使用关键字extends
  3. 调用子类构造器时,先调用父类的无参构造。如果父类没有无参构造,就通过super调用有参构造。

注意:

  • Java中类只有单继承,没有多继承。子类只能有一个父类

③ 多态(方法的多态,属性没有)

要求:

  1. 需要有继承关系的两个类
  2. 方法需要重写,父类的引用指向子类
  3. 父类引用指向子类对象:Father f1 = new Son();

例如:

Father f1 = new Son();

父类调用被子类重写的方法时,运行的是重写后的方法

父类想用子类独有的方法时需要强制转换

((Son)f1).方法();

Son s1 = new Son();

子类可以调用父类的方法

12.super、方法的重写

1) super注意点:

  1. super();调用父类的构造方法,必须在构造方法的第一句。
  2. super只能在子类的方法,或构造方法中。
  3. super();和this();两个构造方法不能同时调用。

2) 方法的重写:

子类重写父类的方法。(Alt + insert; override)

① 要求:

  1. 需要有继承关系
  2. 方法名必须相同,参数列表必须相同,方法体不同
  3. 不能被static,final,private修饰词修饰
  4. 修饰符:范围可以扩大但不能缩小 public>protected>default>private
  5. 抛出的异常:范围可以被缩小,但不能扩大

② 作用:

  1. 父类的功能,子类不一定需要,或者不一定满足。

13.异常

Throwable - 顶级父类

-- Error:系统错误,无法修复

-- Exception:可修复的错误

--RunTimeException

--ClassCastException

--ClassNotFoundException

14.抽象类与接口

1) 特点:

  • 接口会为简写形式的变量,自动拼接public static final
  • 接口方法会自动拼接public abstract,接口可以存在static方法
  • 接口里的资源,默认public

2) 关系:

  • 接口与接口间可以多继承。
  • 接口与实现类之间可以多实现。
  • 类可以同时继承类和实现接口。