JavaSE - 01-Java基础

发布于:2023-01-16 ⋅ 阅读:(434) ⋅ 点赞:(0)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


1.Java概述

1.1 JavaSE体系图

在这里插入图片描述

1.2 发展史

语言:人与人交流沟通的表达方式

计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言

1991年,詹姆斯高斯林,开发了Oaks(橡树)

2004年,JDK1.5版本出现,命名发生改变

​ J2SE=》JavaSE: Java 语言的(标准版),用于桌面应用的开发,是其他两个版本的基础

​ J2ME=》JavaME: Java 语言的(小型版),用于嵌入式消费类电子设备

​ J2EE =》JavaEE: Java 语言的(企业版),用于 Web 方向的网站开发

2014年,JDK1.8版本更新。

Java语言的特点:健壮性、安全性、支持分布式、跨平台性、面向对象

语言发展过程:机器语言->汇编语言 -> 高级语言

1.3 Java环境的搭建

①在官网中下载并安装JDK
②配置环境变量
	作用:在任意一个文件夹下,都可以通过cmd来调用某个程序的指令
	步骤:
		此电脑右键属性 =>找到高级系统设置 => 系统环境变量配置  
		添加一个变量:JAVA_HOME 赋值一个JDKbin目录的上一个目录路径
		点击path创建一个路径:%JAVA_HOME%\bin

1.4 JDK、JRE、JVM关系

JDK:全称JavaDevelopersKit Java开发工具包,它里面包含了Java开发所必备的开发工具(java.exe 、javac.exe)以及JRE。

JRE:全称JavaRuntimeEnvironment Java运行环境,它里面包含了Java开发核心类库及JVM。

JVM:全程JavaVirtualMachine Java虚拟机,所有的Java代码都要运行在Java虚拟机上。

三者之间的关系:JDK = 开发工具 + JRE;JRE = 核心类库 + JVM.

###1.5 Java跨平台的原理

①.Java代码不是直接在操作系统中运行的,而是通过Java虚拟机来运行的。

②.不同的操作系统对应着有不同的Java虚拟机。

③.这样就可以实现一次编译到处运行。

1.6 编写第一个程序

①在任意文件夹下,创建一个名未HelloWord.java文件

②在文件中编写如下代码:

class HelloWord{
    public static void mian(String[] args){
        System.out.println("Hello Word");
    }
}

③在当前目录下打开cmd,输入javac HelloWord.java编译文件

④在命令行中输入java HelloWord命令运行代码

2.Java基本语法

2.1 Java注释

作用:用于对某个程序进行解释说明的。

单行注释:// 注释内容

多行注释:/* 注释内容 */

文档注释:/** 注释内容 */

2.2 关键字与标识符

关键字: 在Java中已经被赋予特殊含义的单词。

用于定义数据类型的关键字 class interface enum byte short int long float double char boolean void

用于定义流程控制的关键字 if else switch case default while do for break continue return

用于定义访问权限修饰符的关键字 private protected public

用于定义类,函数,变量修饰符的关键字 abstract final static synchronized

用于定义类与类之间关系的关键字 extends implements

用于定义建立实例及引用实例,判断实例的关键字 new this super instanceof

用于异常处理的关键字 try catch finally throw throws

用于包的关键字 package import 其他修饰符关键字 native strictfp transient volatile assert

用于定义数据类型值的字面值 true false nul

标识符: 给包、变量、类、方法命名的字符序列。

标识符命名规则(必须遵守):

​ ①、由数字、字母、下划线、$组成。

​ ②、标识符不能由数子开头。

​ ③、标识符不能是Java关键字。

​ ④、标识符严格区分大小写。

标识符命名规范(可以不遵守):

​ ①、包名全小写:每个单词之间用点隔开。例如:xxx.yyy.zzz

​ ②、变量名、方法名:首个单词全小写,后面每个单词首字母都大写。例如:xxxYyyZzz

​ ③、类名、接口名:每个单词首字母大写。例如:XxxYyyZzz

​ ④、常量名:每个单词都大写,单词之间用下划线隔开。例如:XXX_YYY_ZZZ

2.3 常量

概述: 在程序运行的过程中,其值不会发生改变的量。

常量的分类:自定义常量(后面赘述)、字面值常量

字面值常量:

字符串常量 用双引号括起来的多个字符(可以包含0个、一个或多个),例如"a"、“abc”、"中国"等
整数常量 整数,例如:-10、0、88等
小数常量 小数,例如:-5.5、1.0、88.88等
字符常量 用单引号括起来的一个字符,例如:‘a’、‘5’、‘B’、'中’等
布尔常量 布尔值,表示真假,只有两个值true和false
空常量 一个特殊的值,空值,值为null
除空常量外,其他常量均可使用输出语句直接输出。

public class Demo {
    public static void main(String[] args) {
        System.out.println(10); // 输出一个整数
        System.out.println(5.5); // 输出一个小数
        System.out.println('a'); // 输出一个字符
        // System.out.println('12'); // 报错 字符常量是用单引号引起的一个字符,12为两个字符
        System.out.println(true); // 输出boolean值true
        System.out.println("欢迎来到java"); // 输出字符串
    }
}

转义字符:

\t 制表符
\n 换行
\r 回车
\\ 斜杠

2.4 计算机中存储的数据

位(比特位):是计算机存储中最小的信息单元,用bit表示。

字节: 计算机中基本的存储单元,用B表示。

计算机存储的转换关系:

1B = 8bit
1TB = 1024GB
1GB = 1024MB
1MB = 1024B

进制: 就是进位制,是人们规定的一种进位方法。 对于任何一种进制–X进制,就表示某一位置上的数运算时 是逢X进一位。二进制就是

逢二进一,八进制是逢八进一,十进制是逢十进一,十六进制是逢十六进一。

二进制:逢二进一,由01组成,0b开头。例如:0b10010
八进制:逢八进一。由0~7组成,0开头。例如:0245
十六进制:逢十六进一,由0~9,a~f组成,0x开头。例如:0x5afe
十进制:逢十进一,由0~9组成。

进制之间的转换:

任意进制->十进制:
    把系数*基数的权次幂相加即可
	系数:就是每一位上的数据。
	基数:X进制,基数就是X。
	权:在右边,从0开始编号,对应位上的编号即为该位的权
	例如:
    	0b100 = 1*2^2 + 0*2^1 + 0*2^0 = 4
    	0x100 =  1*16^2 + 0*16^1 + 0*16^0 = 256
    	0100 = 1*8^2 + 0*8^1 + 0*8^0 = 64
 十进制->任意进制:
    除积倒取余
	除以基数得到余数直到商为零,对所得余数倒序反转

2.5 变量

概述: 在程序执行过程中,其值可以变化的量。

定义格式:

边声明边赋值:数据类型 变量名 = 变量值;

先声明再赋值:数据类型 变量名; 变量名 = 变量值;

public class Demo01 {
    public static void main(String[] args) {
        // 边声明,边赋值:数据类型 变量名 = 变量值;
        int a = 18;
        System.out.println("a = " + a);

        // 先声明,再赋值:数据类型 变量名; 变量名 = 变量值;
        int b ;
        b = 11;
        System.out.println("b = " + b);
    }
}

注意事项:

①、在同一个作用域中,不能由相同的变量名。

②、变量再使用的过程中,一定是先赋值在使用。否则会报未初始化变量异常信息。

③、再变量的使用时,数据类型一定要和声明的变量相同或兼容。

最终变量:(也可称为常量): 由final关键字修饰的变量

2.6 数据类型

Java是一个强类型语言,Java中的数据必须明确数据类型。在Java中的数据类型包括基本数据类型和引用数据类型 两种。

基本数据类型(4类8种)

①、整数类型(4种):byte、short、int、long

public class Demo01 {
    public static void main(String[] args) {
        // 1、字节型 byte 占用空间:1个字节 取值范围:-128~127
        byte b1 = 11;
        System.out.println("b1 = " + b1);
        // byte b2 = 200; 报错超出取值范围

        // 2、短整型 short 占用空间:2个字节 取值范围:-32768~32767
        short s1 = 220;
        System.out.println("s1 = " + s1);

        // 3、整型 int 占用空间:4个字节 取值范围:-2的31次方到2的31次方-1,Java中整数型默认为int
        int i = 10000;
        System.out.println("i = " + i);

        // 4、长整型 long 占用空间:8个字节 取值范围:-2的63次方到2的63次方-1,后面加l\L作为标记
        long l = 100000L;
        System.out.println("l = " + l);
    }
}

②、小数型:double、float

public class Demo02 {
    public static void main(String[] args) {
        // 1.单精度浮点型 float 占用4个字节 使用时添加标记:F\f
        float f = 3.14f;
        System.out.println("f = " + f);

        // 2.双精度浮点型 double 占用8个字节 Java种小数默认数据类型为double
        double d = 3.14;
        System.out.println("d = " + d);
    }
}

③、布尔型:boolean 用于逻辑判断

④、字符型:char

public class Demo03 {
    public static void main(String[] args) {
        // 布尔型 boolean 占用1个字节 其值为true false
        boolean b1 = true;
        System.out.println("b1 = " + b1);
        boolean b2 = false;
        System.out.println("b2 = " + b2);

        // 字符型 char 占用1个字节
        char c1 = 'a';
        System.out.println("c1 = " + c1);
    }
}

数据类型之间的转换
①、隐士转换(自动转换):把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量。这种转换方式是自动的,直接书写即可。

public class Demo04 {
    public static void main(String[] args) {
        short s = 100; // short取值范围:-32768~32767
        int i = s;	  // int的取值范围:-2的31次方到2的31次方-1
        System.out.println("i = " + i);
    }
}

结论:

​ byte -> short -> int -> long -> float -> long

​ char-> int -> long -> float -> long

②、强制转换:强制将范围大的转换成范围小的数据类型,注意容易造成精度损失。

格式:目标数类型 变量名 = (目标数据类型)(被转换的数据/表达式)

public class Demo05 {
    public static void main(String[] args) {
        int i = 100;
        short s = (short) i;
        System.out.println("s = " + s);

        short s1 = 100;
        short s2 = 1;
        // short s3 = s1 + s2; // 编译报错,原因时系统自动将short类型数据提升至int,计算后结果时int类型
        short s3 = (short)(s1 + s2);
        System.out.println("s3 = " + s3);
    }
}

3.运算符与表达式

3.1 算数运算符

运算符: 对常量或者变量进行操作的符号

表达式: 用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。 不同运算符连接的表达式体现的是不同类型的表达式。

public class Demo01 {
    public static void main(String[] args) {
        int num1 = 10;
        int num2 = 2;

        // 加法运算 +
        int sum = num1 + num2;
        System.out.println("sum = " + sum);

        // 减法运算 -
        int diff = num1 - num2;
        System.out.println("diff = " + diff);

        //  乘法运算   *
        int mult = num1 * num2;
        System.out.println("mult = " + mult);

        //  除法运算  /
        int div = num1 / num2;
        System.out.println("div = " + div);

        // 取余运算 %
        int rem = num1 % num2;
        System.out.println("rem = " + rem);
    }
}

注意事项:

①、加法在计算两个字符串时,是做拼接处理。

②、除法用于两个int类型时,计算后直接取整数作为结果的返回值

3.2 赋值运算符

public class Demo02 {
    public static void main(String[] args) {
        // = 等于
        int i = 10; // 将10赋值给i变量
        System.out.println("i = " + i);

        // += 加等于
        int i2 = 0;
        i2 += 2; // 实际上就是:i2 = i2 + 1;
        System.out.println("i2 = " + i2);

        // -= 减等于
        int i3 = 10;
        i3 -= 5; // 实际上:i3 = i3 - 5;
        System.out.println("i3 = " + i3);

        // *= 乘等于
        int i4 = 2;
        i4 *= 2; // i4 = i4 * 2;
        System.out.println("i4 = " + i4);

        // /= 除等于
        int i5 = 10;
        i5 /= 2; // i5 = i5 /2;
        System.out.println("i5 = " + i5);

        // %= 取模等于
        int i6 = 5;
        i6 %= 2; // i6 = i6 % 2;
        System.out.println("i6 = " + i6);
        
    }
}

3.3 关系运算符

public class Demo03 {
    public static void main(String[] args) {
        int a = 10;
        int b = 11;

        // 大于 : >
        boolean b1 = a > b;
        System.out.println("b1 = " + b1);

        // 小于 :<
        boolean b2 = a < b;
        System.out.println("b2 = " + b2);

        // 小于等于 : <=
        boolean b3 = a <= b;
        System.out.println("b3 = " + b3);

        // 大于等于 : >=
        boolean b4 = a >= b;
        System.out.println("b4 = " + b4);

        // 判断两个值是否相等 :==
        boolean b5 = a == b;
        System.out.println("b5 = " + b5);

        // 判断两个值是否不相等
        boolean b6 = a != b;
        System.out.println("b6 = " + b6);

    }
}

注意事项:
​ ==如果判断的是基本数据类型,判断其值是否相等

​ 如果判断的是引用数据类型,判断的是对象内存地址。

3.4 逻辑运算符

public class Demo04 {
    public static void main(String[] args) {
        // 1.与 &, 两边只要有一边为false,则结果为false
        System.out.println(true & true);
        System.out.println(true & false);
        System.out.println(false & false);
        System.out.println("------");

        // 2.或 | ,两边只要有一边为true,则结果为true
        System.out.println(true | true);
        System.out.println(true | false);
        System.out.println(false | false);
        System.out.println("------");

        // 3. 异或 ^,两边只要只要相同,结果为true。否则为false
        System.out.println(true ^ true);
        System.out.println(true ^ false);
        System.out.println(false ^ false);
        System.out.println("------");

        // 4. 取反 ! ,结果取反
        System.out.println(!true);
        System.out.println(!false);
        System.out.println("------");

        // 5. 双与(短路与) && ,两边只要有一边为false,则结果为false。
        // 当第一个条件为false,则后面不执行
        System.out.println(true && true);
        System.out.println(true && false);
        System.out.println(false && false);
        System.out.println("------------------");

        // 6. 双或 || ,两边只要有一边为true,则结果为true
        // 当第一个条件为true,则后面不执行
        System.out.println(true || true);
        System.out.println(true || false);
        System.out.println(false || false);

    }
}

&与&&区别:

相同:两边只要都为true,则结果为true。

​ 只要有一边为false,则结果为false。

不同:&& 是当第一个条件为false时,后面直接不执行。

​ &第一个条件为false,后面还是执行。

3.5 条件运算符(三目运算符)

public class Demo05 {
    public static void main(String[] args) {
        // 格式 : (条件表达式) ? 结果1 : 结果2
        int a = 10;
        int b = 20;
        int max= (a > b) ? a : b;
        System.out.println("max = " + max);
    }
}

3.5 位运算符

public class Demo06 {
    public static void main(String[] args) {
        // 1. & 按位与,当两位相同时为1时才返回1
        System.out.println(1 & 0);
        // 2. | 按位或,只要有一位为1即可返回1
        System.out.println(1 | 0);
        // 3. ~ 按位非,将操作数的每个位(包括符号位)全部取反
        System.out.println(~1);
        // 4. ^ 按位异或。当两位相同时返回0,不同时返回1
        System.out.println(1 ^ 2);
        // 5. << 左移运算符
        System.out.println(1 << 2);
        // 6. >> 右移运算符
        System.out.println(1 >> 2 );
        // 7. >>> 无符号右移运算符
        System.out.println(1 >>> 2);
    }
}
本文含有隐藏内容,请 开通VIP 后查看