Egoistic_Flowers

JavaSE基础
JavaSE基础

f0f30996658f45427a3c7ee6d36c24e6

JavaSE基础

1 Java环境配置

1.1 安装JDK

推荐安装JDK1.8(JDK8)广泛使用

打开cmd,输入以下命令,查看是否安装成功

java -version

1.2 配置环境变量

配置环境变量路径:此电脑→属性→高级系统设置→环境变量

Untitled

1.配置JAVA_HOME

配置为JDK的安装路径

323232331

2.配置Path

1121323131

2 基础语法

2.1 Helloworld编写

使用Notepad++编写代码

在当前目录下使用CMD对代码进行编译,命令如下:

编译完成,生成Hello.class,使用CMD运行,命令如下:

2.2 IDEA使用

打开IDEA创建项目

idea1

选择New Project新建项目

idea2

创建好的项目文件

  • public static void main 联想输入psvm
  • System.out.prinfln 联想输入sout

快速补全代码

idea3

2.3 基本知识

接着之前写的Helloworld,解释其中字串的含义:

1213133132

  • 大小写敏感:Java 是大小写敏感的,这就意味着标识符 Hellohello 是不同的。
  • 类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。
  • 方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
  • 源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java。(如果文件名和类名不相同则会导致编译错误)。
  • 主方法入口:所有的 Java 程序由 public static void main(String[] args) 方法开始执行。

2.4 注释,标识符,关键字

1)注释

2)Java 关键字

下面列出了 Java 关键字。这些保留字不能用于常量、变量、和任何标识符的名称。

关键字类别说明
private访问控制私有
public访问控制公有
protected访问控制保护
default访问控制默认
abstract类,方法,变量修饰符声明抽象
class类,方法,变量修饰符
extends类,方法,变量修饰符继承

3)Java修饰符

像其他语言一样,Java可以使用修饰符来修饰类中方法和属性。主要有两类修饰符:

  • 访问控制修饰符 : default, public , protected, private
  • 非访问控制修饰符 : final, abstract, static, synchronized

2.5 数据类型

java基本的数据类型如下:

名称大小
byte1byte
short2byte
int4byte
long8byte
float4byte
double8byte
boolean1or4byte
char2byte

2.6 类型转换

数据类型转换必须满足如下规则:

    1. 不能对boolean类型进行类型转换。
    1. 不能把对象类型转换成不相关类的对象。
    1. 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
    1. 转换过程中可能导致溢出或损失精度,例如:

    因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。

    1. 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如:

2.7 常量

常量定义:常量在程序运行时是不能被修改的。

在 Java 中使用 final 关键字来修饰常量,声明方式和变量类似:

字面常量:虽然常量名也可以用小写,但为了便于识别,通常使用大写字母表示常量。

字面量可以赋给任何内置类型的变量。例如:

进制表示:byte、int、long、和short都可以用十进制、16进制以及8进制的方式来表示。

当使用字面量的时候,前缀 0 表示 8 进制,而前缀 0x 代表 16 进制, 例如:

字符串常量:和其他语言一样,Java的字符串常量也是包含在两个引号之间的字符序列。下面是字符串型字面量的例子:

Unicode字符:字符串常量和字符常量都可以包含任何Unicode字符。例如:

2.8 变量

变量声明

在Java语言中,所有的变量在使用前必须声明。声明变量的基本格式如下:

变量类型(作用域)

Java语言支持的变量类型有:

  • 类变量:独立于方法之外的变量,用 static 修饰。
  • 实例变量:独立于方法之外的变量,不过没有 static 修饰。
  • 局部变量:类的方法中的变量。

局部变量

  • 局部变量声明在方法、构造方法或者语句块中
  • 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁
  • 访问修饰符不能用于局部变量;
  • 局部变量只在声明它的方法、构造方法或者语句块中可见
  • 局部变量是在栈上分配的。
  • 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。

实例变量

  • 实例变量声明在一个类中,但在方法、构造方法和语句块之外
  • 当一个对象被实例化之后,每个实例变量的值就跟着确定
  • 实例变量在对象创建的时候创建,在对象被销毁的时候销毁,通过new创建的分配在堆区;
  • 实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息;
  • 实例变量可以声明在使用或者使用
  • 访问修饰符可以修饰实例变量(public,private);
  • 实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见;
  • 实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定;
  • 实例变量可以直接通过变量名访问。但在静态方法以及其他类中,就应该使用完全限定名:ObejectReference.VariableName。

类变量

  • 类变量也称为静态变量,在类中以 static 关键字声明,但必须在方法之外。
  • 无论一个类创建了少个对象,类只拥有类变量的一份拷贝
  • 静态变量除了被声明为常量外很少使用,静态变量是指声明为 public/private,final 和 static 类型的变量。静态变量初始化后不可改变。
  • 静态变量储存在静态存储区。经常被声明为常量,很少单独使用 static 声明变量。
  • 静态变量在第一次被访问时创建,在程序结束时销毁 (类加载)
  • 实例变量具有相似可见性。但为了对类的使用者可见,大多数静态变量声明为 public 类型。
  • 默认值和实例变量相似。数值型变量默认值是 0,布尔型默认值是 false,引用类型默认值是 null。变量的值可以在声明的时候指定,也可以在构造方法中指定。此外,静态变量还可以在静态语句块中初始化。
  • 静态变量可以通过:ClassName.VariableName的方式访问。
  • 类变量被声明为 public static final 类型时,类变量名称一般建议使用大写字母。如果静态变量不是 public 和 final 类型,其命名方式与实例变量以及局部变量的命名方式一致。

2.9 运算符

算数运算符

y1

关系运算符

y2

位运算符

y3

逻辑运算符

y4

赋值运算符

y5

条件运算符(?:)

  • Value of b is : 30

    Value of b is : 20

2.10 扫描器

扫描器使用:

3 流程控制

3.1 条件语句

if语句

语法

if 语句的语法如下:

if...else语句

if 语句后面可以跟 else 语句,当 if 语句的布尔表达式值为 false 时,else 语句块会被执行。

语法

if…else 的用法如下:

switch case 语句

switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。

语法

switch case 语句语法格式如下:

  • case中的变量类型可以是: byte、short、int 、 char、String 类型
  • 当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句

3.2 循环语句

while 循环

while是最基本的循环,它的结构为:

do…while 循环

do…while 循环至少会执行一次

for循环

for 循环(go range关键字)

例子:

break 关键字

break 跳出最里层的循环,并且继续执行该循环下面的语句

语法

break 的用法很简单,就是循环结构中的一条语句:

continue 关键字

让程序立刻跳转到下一次循环的迭代

语法

continue 就是循环体中一条简单的语句:

3.3 流程控制综合

1. 打印九九乘法表

2. 打印被5整除的数 每行三个

3. 打印三角形

4 数组

4.1 数组创建

4.2 二维数组

4.3 Arrays类

java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。

具有以下功能:

  • 给数组赋值:通过 fill 方法。
  • 对数组排序:通过 sort 方法,按升序。
  • 比较数组:通过 equals 方法比较数组中元素值是否相等。
  • 查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。

4.4 稀疏数组

4.5 冒泡排序

5 String类

5.1 创建字符串

5.2 String 方法

字符串长度

连接字符串

image-20211201173731186

6 方法

6.1 方法创建

6.2 方法重载

定义同名方法,不同参数进行方法重载

6.3 命令行传参

6.4 可变参数

6.5 递归

7 对象与类

7.1 对象和类

基本概念

  • 多态
  • 继承
  • 封装
  • 抽象
  • 对象
  • 实例
  • 方法
  • 重载

一个类可以包含以下类型变量:

  • 局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
  • 成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
  • 类变量:类变量也声明在类中,方法体之外,但必须声明为 static 类型。

7.2 构造器

构造器(构造方法)分为有参构造,无参构造,不声明构造方法会默认带无参构造,但是创建了有参构造之后就不会自动生成无参构造了,需要手动声明无参构造才能使用

7.3 创建对象

对象是根据类创建的。在Java中,使用关键字 new 来创建一个新的对象。创建对象需要以下三步:

  • 声明:声明一个对象,包括对象名称和对象类型。
  • 实例化:使用关键字 new 来创建一个对象。
  • 初始化:使用 new 创建对象时,会调用构造方法初始化对象。

下面是一个创建对象的例子:

7.4 访问对象属性与方法

直接访问对象的属性和方法,方法和属性需要是public或者default属性

7.5 封装

使用private控制符修饰类属性,通过共有方法来获取私有属性

7.6 继承

extends关键字

继承类型

需要注意的是 Java 不支持多继承,但支持多重继承。java-extends-2020-12-08

继承的特性

  • 子类拥有父类非 private的属性、方法
  • 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展
  • 子类可以用自己的方式实现父类的方法(重写)
  • 提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)

super 与 this 关键字

  • super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。
  • this关键字:指向自己的引用。

final关键字

  • final 关键字声明类可以把类定义为不能继承的

继承测试

Person类:

student类 继承 Person

main:

7.7 多态

多态就是用父类的引用指向子类的对象,子类重写父类的方法

例1:

例2:

7.8 抽象类

abstract关键字

声明了abstract的方法只能声明,实现只能在子类中重写实现

abstract方法只能在abstract抽象类中定义

7.9 接口

接口可以实现双继承,模板中的方法只能声明,不能实现

接口创建

implements关键字

implements关键字用来实现接口

8 异常处理

8.1 异常概述

三种类型的异常:

  • 检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。
  • 运行时异常: 运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。
  • 错误: 错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。

Exception 类的层次

exception-hierarchy

8.2 捕获异常

try catch

  • IDEA:Crtl+Alt+T快速创建代码块

使用 try 和 catch 关键字可以捕获异常。try/catch 代码块放在异常可能发生的地方。

try/catch代码块中的代码称为保护代码,使用 try/catch 的语法如下:

多重捕获块

一个 try 代码块后面跟随多个 catch 代码块的情况就叫多重捕获。

把小异类型常在前大异常类型在后

finally关键字

finally 代码块中的代码总会被执行,在 finally 代码块中,可以运行清理类型等收尾善后性质的语句

8.3 抛出异常

throws/throw 关键字

throw 关键字:主动抛出异常

抛出的异常需要被捕获或者用throws关键字抛出此方法,在方法外部捕获异常

一个方法可以抛出多种异常

8.4 自定义异常

通过继承Exception类来自定义异常,自定义的异常可以写自己的方法,重写toString方法打印异常信息,定义构造方法来记录异常的信息

MyException:

main & test:

结果:

打印堆栈信息就会调用重写的toString方法,打印错误信息

 

posted on 2021-12-01 22:52  Egoistic_Flowers  阅读(32)  评论(0编辑  收藏  举报