01- Java基础知识

一. 前言

1. Java发展史

  • Java 8 版本目前使用居多(2014年发布)

2. 计算机基础知识

  • 二进制:bit(比特、位);莱布尼茨发明
  • 字节:Byte;计算机中的最小存储单位;8位为1个字节:1 Byte = 8 bit
  • 1024 进制:1 KB = 1024 Byte;1 MB = 1024 KB

3. 常用命令

MS-Dos (Microsoft Disk Operating System)操作系统在Windows中以命令提示符(cmd 打开)形式存在

  • 切换盘符:C:d:E:
  • 进入文件夹:cd 文件夹名称cd 文件夹1\文件夹2\文件夹3
  • 返回上一级:cd ..cd \
  • 查看当前目录内容:dir
  • 清空当前屏幕:cls
  • 退出:exit
  • 上/下一个命令:方向↑/↓键

4. 开发环境

4.1. 名词解释

  • JVM:Java 虚拟机(Java Virtual Machine):Java程序是通用的,JVM在每个操作系统中充当翻译者角色。

Java 的 跨平台性 主要归功于JVM、它本身并不具有跨平台功能:每个操作系统下都有不同版本的虚拟机

  • JRE:Java的运行时环境(Java Runtime Environment ):包含JVM和运行时所需要的核心类库

想要运行已有的 Java 程序,只需要安装 JRE即可

  • JDK: Java程序开发工具包(Java Development Kit);包含JRE和开发人员使用的工具

想要开发 Java 程序,则必须安装 JDK

4.2 环境变量的配置

  1. 新建全局环境变量:变量名为:JAVA_HOME 、变量值为:JDK的安装路径(bin目录的上一级即可)

  2. 编辑 path 中的值:增加一条%JAVA_HOME%\bin 的值即可

二. HelloWorld入门程序

Java开发的三个步骤:编写、编译、运行

  • 编写:使用编辑器(高级编辑器)编写Java程序:HelloWorld.java
  • 编译:使用javac.exe进行编译 -> Java字节码文件:javac HelloWorld.java运行后生成HelloWorld.class文件
  • 运行:使用java.exe运行:java HelloWorld【注】: 不要加后缀名
public class HelloWorld{
    public static void main(String[] args){
        System.out.println("Hello,Wolrd !!!");
    }
}

注意:类名称必须与文件名称一模一样

三. 关键字与标识符

关键字:被保留的、具有特殊含义的

  • 完全小写的字母
  • 在高级编辑器中,有特殊颜色的

标识符:自定义的内容,如类名称、接口、变量名称等

  1. 命名规则(硬性要求)

    • 可包含26个英文字母(包含大小写)、0 - 9数字、$ 和 _(下划线)

    • 不能以数字开头

    • 不能是关键字

  2. 命名规范(软性要求)

    • 类名称:大驼峰式(如:HelloWorld)
    • 变量名:小驼峰式(如:helloWorld)
    • 方法名:同变量名

四. 数据类型&常量&变量

1.数据类型

  1. 基本数据类型:4类8种
  2. 引用数据类型:如字符串、数组、类、接口等

基本数据类型:

  • 整型:byte、short、int(默认)、long
  • 浮点型:float(单精度)、double(默认、双精度)
  • 字符型:char
  • 布尔型:boolean
类型 字节 默认值 范围
byte 字节型 1 0 -2^7 ~2^7-1
short 短整型 2 0 -2^15 ~ 2^15-1
int 整型 4 0 -2^31 ~ 2^31-1
long 长整型 8 0L -2^63 ~2^63-1
float 单精度浮点型 4 0.0F 3.402823E+38 ~ 1.401298E-45
double 单精度浮点型 8 0.0D .797693E+308~ 4.9000000E-324
char 字符型 2 空格
bool 1 false

2. 常量

程序运行期间,不改变值的量

  • 字符串常量:用双引号引起来的量
  • 整型常量:直接写上的数字(没有小数点)
  • 浮点型常量:直接写上的小数(有小数点)
  • 字符常量:单引号引起来的单个字符(单引号之间要有内容,没有则不行)
  • 布尔类型:true/false
  • 空常量:null(代表没有任何数据,当然不能用来直接打印输出)

3. 变量

程序运行期间,值发生改变的量

  • 创建多个变量,变量名不能重复

  • 对于floatlong类型时,后缀F和L不能丢掉

  • 如果使用byteshort类型的变量,那右侧的数据不能超过左边类型的范围

  • 没有进行赋值的变量,不能直接使用

  • 不能超过作用域(从定义变量的一行开始,一直到所属的大括号结束为止)的范围

  • 可以通过一个语句创建多个变量,但不推荐

拓展:

  • 如果表达式中全为常量,编译器会直接得到表达式的结果-->编译器的常量优化

五. 数据类型转换

1. 自动类型转换(隐式)

  • 特点:代码不需要进行特殊处理,自动完成

  • 规则:数据范围从小到大(等号右边数据范围小,左边范围大)

2. 强制类型转换(显式)

  • 特点:代码需要进行特殊格式处理

  • 格式:范围小的类型 范围小的变量名 = (范围小的类型)原本范围大的数据

3. 数据转换注意事项

  • 强制类型转换一般不推荐使用 --> 精度损失、数据溢出

  • byteshortchar这三种类型都可以发生数学运算,例如加法 “+”

  • byteshortchar这三种类型都可以发生数学运算,在运算时首先都会被提升成int类型,然后再计算。char类型对应的数值参考ASCII码表

  • ASCII码表:48--065--A97--a

  • boolean类型不能发生数据类型转换(Java中不能当作0/1对待)

对于byte、short、char三种类型来说,如果右侧赋值的数值没有超过范围,那么javac编译器将会自动隐含地为我们补上一个(byte)、(short)、(char)

    1. 如果没有超过左侧的范围,编译器补上强转
    2. 如果右侧超过了左侧数据类型范围,编译器报错

4. 编码表

数字和字符的对照关系

  • ASCII码表:American Standard Code for Information Interchange,美国信息交换标准代码

  • Unicode码表:万国码,开头0-127与ASCII完全一样,就连emoji也有数字与之对应

六. 运算符

1. 算数运算符

+ 加法运算,字符串连接运算
- 减法运算
* 乘法运算
/ 除法运算:结果是整数(只看商,不看余数)
% 取模运算:两个数字相除取余数(只有对于整数来说,取模才有意义)
++-- 自增、自减运算

四则运算中:

  • 一旦运算中有不同类型的数据类型,那么结果将会是数据类型范围大的那种

  • 任何数据类型和字符串进行连接操作的时候,结果都会变成字符串

自增、自减:

  • 基本含义:让一个变量加1、减1

  • 格式:卸载变量之前或者变量之后:++numnum++

  • 使用方式:

    • 单独使用:不和其他操作混合 --> 前++和后++没有任何区别

    • 混合使用:如赋值运算、打印输出 --> 有重大区别,但该+/-一定会+/-

      • 如果是【前++】,那么变量【立刻马上+1】,然后拿着结果进行使用 --【先+后用】

      • 如果是【后++】,那么首先使用变量本来的数据,然后【再让变量+1】--【先用后+】

  • 注意事项:只有变量才能使用自增/自减运算

2. 赋值运算符

赋值运算符 含义
= 等于号
+ = 加等于:a += 1 相当于 a = a+1
- = 减等于:a -= 1 相当于 a = a-1
*= 乘等于
/= 除等于
%= 取模等于

注意事项:

  • 只有变量才能使用赋值运算符,常量不能进行赋值

  • 复合赋值运算符中隐含了一个强制类型转换

3. 比较运算符

比较运算符 含义
== 比较两边数据是否相等,相等结果为true
< 左边数据是否小于右边数据,成立则结果为true
>
<=
>=
!= 如果两边数据不相等,结果为true

注意事项:

  • 结果是一个boolean值

  • 如果进行多次判断,不能连着写(如:1<2<3),需要用到逻辑运算符

4. 逻辑运算符

逻辑运算符 含义
&& 全true则true
|| 有true则true
! 取反:本来是true,取反变false

短路:

  • 如果根据左边已经可以判断得到最终结果,那么右边的代码将不再执行,从而节省一定的性能

注意事项:

  • 逻辑运算符只能用于boolean值

5. 三元运算符

  • 一元运算符:只需要一个数据就可以进行操作。如取反、自增、自减

  • 二元运算符:需要两个数据才能操作的运算符。如加法、减法

  • 三元运算符:需要三个数据才可以操作的运算符

格式:

数据类型 变量名称 = 条件判断 ? 表达式A:表达式B

流程:

首先判断条件是否成立:

如果成立为true,将表达式A的值赋值给左侧的变量;

如果成立为false,将表达式B的值赋值给左侧的变量;

二者选其一。

注意事项;

  • 必须同时保证表达式A和表达式B都符合左侧数据类型的要求

  • 三元运算符的结果必须被使用(必须赋值或者打印输出)

七. 流程控制语句

1. 顺序结构

按代码顺序执行

2. 选择结构

1. if 结构

  1. if语句
if(关系表达式){
    语句体//true则执行
}
  1. 标准的if...else语句--可用三元运算符转换
if(关系表达式) {
   语句体1;//true则执行
} else {
   语句体2;//false则执行 
}
  1. 复合的if...else语句:else if
if(关系表达式1) {
     语句体1;
} else if(关系表达式2) {
     语句体2;
}
...
} else if(关系表达式3){
     语句体3;
} else{
     语句体4;
}

2. switch 结构

switch(表达式){
    case 常量值1;
        语句体1;
        break;
    case 常量值2;
        语句体2;
        break;  
    ...
    default:
        语句体n;
        break;
}

注意事项;

  • 多个case后面的数值不能重复

  • switch后面小括号只能是下列数据类型:6种

    • 基本数据类型:byte/short/char/int

    • 引用数据类型:String字符串、enum枚举

  • switch语句很灵活:前后顺序可颠倒、break可省略(不推荐)-- case穿透

  • 停止条件:匹配到哪一个case就从哪一个位置向下执行,直到遇到了break或整体结束

3. 循环结构

1. for 循环

for(初始化表达式;布尔表达式;步进表达式){
    循环体;
}

2. while 循环

表准格式:

while(条件判断){
    循环体;
}

拓展格式:效果与for循环一样

初始化语句;
while(条件判断){
    循环体;
    步进语句;
}

3. do...while 循环

do{
    循环体;
} while (条件判断);

4. 三种循环的区别

  • 如果条件判断从来没有满足过,那么for循环和while循环会执行0次,但do...while会执行1次

  • for循环的变量在小括号内定义,只有循环内部才可以使用。while和do-while循环的初始化语句本来就在外面,所以出循环后还可以继续使用

  • 凡是次数确定场景多用for循环,否则while循环

5. 死循环

  • 无心之过

  • 有意为之

while (true){
    循环体;
}

4. 条件控制语句

  • break关键字

    • 用在switch语句中,一旦执行,整个switch语句立即结束

    • 用在循环语句中,一旦执行,整个循环语句立刻结束,打断循环

  • continue关键字

    • 一旦执行,立刻跳过当前次循环剩余内容,马上开始下一次循环

你可能感兴趣的:(01- Java基础知识)