JavaSE基础



前言

“楚塞三湘接,荆门九派通。 江流天地外,山色有无中。 郡邑浮前浦,波澜动远空。 襄阳好风日,留醉与山翁”     — 王维《汉江临眺》
在这里插入图片描述


1. Java基础概述

1.1 java简介

       Java是一种面向对象的编程语言,发明者为James Gosling(詹姆斯·高斯林),由Sun公司在1995年5月发布。

1.2 java主要特点

  • 面向对象:Java是一种面向对象编程语言,它将所有功能封装在对象和类中。支持封装、继承和多态等面向对象的特性。
  • 平台独立性:Java具有平台独立性,通过JVM(Java Virtual Machine,Java虚拟机)实现“一次编写,到处运行(Write Once, Run Anywhere)”,可以无障碍的运行在Windows、MacOS,Linux等系统上。
  • 简单性:Java一种易于学习和使用的编程语言。它简化了C++的许多复杂性,比如去除了指针和多继承等特性。
  • 安全性:Java设计时就考虑了安全性,比如在运行时环境中加入了类加载器和字节码验证器。

1.3 Java三大平台

  • Java SE (Java Standard Edition):Java SE提供了Java编程语言的核心功能,包括所有的基础类库、Java虚拟机(JVM)、以及开发工具(如编译器、调试器),是其他两个平台的基础。
  • Java EE (Java Enterprise Edition):Java EE是在Java SE的基础上构建的,它提供了创建大型、分布式、多层次的网络应用程序所需的类库和API,支持企业级应用的开发。
  • Java ME (Java Micro Edition):Java ME是一个轻量级的平台,提供了适用于小型设备(如手机、组织器、电视机顶盒)的Java编程环境。

1.4 Java的发展历史

时间发展
1991年Sun公司的James Gosling团队开发Oak语言,即Java语言的前身
1995年5月Java 1.0 发布,这是Java语言的第一个正式版本
1998年12月Java 2企业版J2EE发布
1999年6月Sun公司发布Java的三个版本,标准版(JavaSE)、企业版(JavaEE)和微型版(JavaME)
2004年9月Java 5.0 发布,引入了泛型、枚举、自动拆装箱等特性
2014年3月Java 8发布,是Java的长期支持版本(LTS),引入了Lambda表达式、Stream API等特性
2018年9月Java 11发布,是Java的长期支持版本(LTS),引入了ZGC(Z Garbage Collector)等特性
2021年9月Java 17发布,是下一个LTS版本,提供了对以前非LTS版本引入的新特性的稳定支持

       Java语言的发展一直保持着相对稳定的节奏,每六个月发布一个新版本,每三年发布一个长期支持版本。随着技术的不断进步,Java社区也在不断推动语言的发展,以满足现代软件开发的多样化需求。

1.5 开发环境搭建

1.5.1 JDK下载和安装

       1. JDK概述

       JDK是Sun公司(现为Oracle公司)为Java开发者提供的一套软件开发工具,是用于Java程序开发的核心工具包。它包含了编写、编译、调试和运行Java程序所需的所有工具和库。

       2. 下载JDK

       官网:http://www.oracle.com

       第一步:进入官网,点击Products

在这里插入图片描述

       第二步:点击Hardware and Software中的Java

在这里插入图片描述

       第三步:下拉至该页面,点击Oracle JDK

在这里插入图片描述

       第四步:选好版本和系统,本教程为JDK22,Windows系统,点击x64 Installer下载即可

在这里插入图片描述

       3. 安装JDK

       傻瓜式安装,下一步即可,注意安装路径不要有中文、空格等一些特殊符号

       4. JDK的安装目录介绍

目录名称说明
bin该路径下存放了JDK的各种工具命令。javac和java就放在这个目录
conf该路径下存放了JDK的相关配置文件
include该路径下存放了一些平台特定的头文件
jmods该路径下存放了JDK的各种模块
legal该路径下存放了JDK各模块的授权文档
lib该路径下存放了JDK工具的一些补充JAR包

1.5.2 配置环境变量

1. 配置环境变量的作用

  • 如果想要在任意目录下,都可以启动某一个软件,那么就可以把这个软件的路径配置到环境变量中的PATH里面。

  • 启动软件的时候,操作系统会先在当前路径下找,如果在当前录课没有再到环境变量的路径中去找。如果都找不到就提示无法启动。

  • 开发Java程序,需要使用JDK提供的javac.exe、java.exe等命令,而这些工具在JDK的安装目录的bin目录下,如果不配置环境变量,那么这些命令只可以在bin目录下使用,而我们想要在任意目录下都能使用,所以就要配置环境变量。

2. 配置环境变量步骤:

       第一步:此电脑 --> 属性 --> 高级系统设置 --> 高级 --> 环境变量

       第二步:找系统变量,新建变量JAVA_HOME,并赋值,值为你下载jdk的路径

在这里插入图片描述

       第三步:找系统变量里面的PATH,并新建%JAVA_HOME%\bin

在这里插入图片描述

1.5.3 IntelliJ IDEA下载和安装

       1. IntelliJ IDEA概述

       IntelliJ IDEA是一款优秀的Java语言集成开发环境,在业界被公认为最好的Java开发工具,支持Git、JUnit等,IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格。

       2. 下载IntelliJ IDEA

       官网:https://www.jetbrains.com/idea

       第一步:打开官网,点击Download

在这里插入图片描述

       第二步:选择.exe(Windows),点击下载

在这里插入图片描述

       3. 安装IntelliJ IDEA

       第一步:双击安装包,点击next

在这里插入图片描述

       第二步:点击Browse修改安装路径,修改完毕点击next

在这里插入图片描述

       第三步:勾选64-bit launcher,点击next

在这里插入图片描述

       第四步:点击Install

在这里插入图片描述

       第五步:点击Finish,完成安装

在这里插入图片描述

4. IntelliJ IDEA中项目的层次结构

  • project(项目、工程):是 IntelliJ IDEA 中最高级别的结构,它包含所有的模块。

  • module(模块):是项目的一部分,可以独立编译和运行。一个项目可以有多个模块。

  • package(包):在模块内部,用于组织相关的类和接口。

  • class(类):位于包中,是编程的基本单元。

2. Java基础语法

2.1 java程序的基本格式

  • 类是编程的基本单元,main方法是程序的主入口。

  • 类定义规则:

    修饰符 class 类名{

    程序代码;

    }

  • 代码示例:
public class HelloWorld {
    public static void main(String[] args) {
        // 输出HelloWorld
        System.out.println("HelloWorld"); 
    }
}

2.2 注释

Java中的注释分为三种:

  • 单行注释:
// 这是单行注释文字
  • 多行注释:
/*
 多行注释
 多行注释
 多行注释
*/
  • 文档注释
/**
 * 文档注释
 * 文档注释
 */

       注意:注释的内容不会参与编译和运行的,仅仅是对代码的解释说明而已。

2.3 标识符

2.3.1 Java标识符概念

       在Java编程语言中,标识符是用来定义类,方法,变量等的名称。

2.3.2 命名规则

  • 由数字、字母、下划线(_)、美元符($)组成。
  • 不能以数字开头。
  • 不能是关键字。
  • 区分大小写,例如:number和Number是两个不同的标识符。

2.3.3 命名习惯

  • 大驼峰命名法

    • 使用场景:常用于类名,接口名和枚举名。

    • 命名规则:如果是一个单词,那么首字母大写,如:Demo、Test。

                              如果是多个单词,那么每一个单词首字母都需要大写:如:HelloWorld、MaxAge。

  • 小驼峰命名法

    • 使用场景:常用于变量名、方法名、参数名。

    • 命名规则:如果是一个单词,那么全部小写,如:demo、test。

                              如果是多个单词,那么从第二个单词开始,首字母都需要大写:如:helloWorld、maxAge。

        注意:命名要见名知意。

                   国内大多遵守alibaba开发手册https://developer.aliyun.com/ebook/386

2.4 关键字

       Java关键字是Java语言中具有特定含义的单词(共50个,都是小写)

abstractassertbooleanbreakbyte
casecatchcharclassconst
continuedefaultdodoubleelse
enumextendsfinalfinallyfloat
forgotoifimplementsimport
instanceofintinterfacelongnative
newpackageprivateprotectedpublic
returnstrictfpshortstaticsuper
switchsynchronizedthisthrowthrows
transienttryvoidvolatilewhile

       注意:关键字很多,不用可以去记,多看多用即可。

2.5 数据类型

2.5.1 Java数据类型分类

  • 基本数据类型:int,double,char,boolean等
  • 引用数据类型:类,数组,枚举,注解等

2.5.2 基本数据类型(四类八种)

数据类型关键字内存占用取值范围
整数byte1负的2的7次方 ~ 2的7次方-1(-128~127)
short2负的2的15次方 ~ 2的15次方-1(-32768~32767)
int4负的2的31次方 ~ 2的31次方-1
long8负的2的63次方 ~ 2的63次方-1
浮点数float41.401298e-45 ~ 3.402823e+38
double84.9000000e-324 ~ 1.797693e+308
字符char20-65535
布尔boolean1true,false

注意:在java中整数默认是int类型,浮点数默认是double类型。

            定义long类型的变量,数据值后面加L后缀。

            定义float类型的变量,数据值后面加F后缀。

2.6 常量

2.6.1 整型常量

       1. 整型即整数,有二进制、八进制、十进制、十六进制四种表示形式

       二进制:由数字0和1组成,以0b或者0B开头,目的是与十进制进行区分,如:0b01101100、0B10110101。

       八进制:由数字0~7组成,以0开头,如:0342。

       十进制:由数字0~9组成,,如:198。

       十六进制:由数字0~9和A-F(不区分大小写)组成,以0x或者0X开头,如:0X25AF。

package com.syh;

public class Esther {
    public static void main(String[] args) {
        // 1.二进制数
        System.out.println("二进制数:" + 0B1111111);  // 127
        // 2.八进制数
        System.out.println("八进制数:" + 0177);       // 127
        // 3.十进制数
        System.out.println("十进制数:" + 127);        // 127
        // 4.十六进制数
        System.out.println("十六进制数:" + 0x7F);     // 127
    }
}

       2. 进制转换

       在计算机科学中,常见的进制转换包括二进制(binary)、八进制(octal)、十进制(decimal)和十六进制(hexadecimal)之间的转换。下面是一些基本的转换方法:

十进制转二进制

       1. 将十进制数除以2

       2. 得到商和余数

       3. 将商继续除以2,直到商为0

       4. 将记录的余数倒序排列,得到二进制数

       示例:将十进制数 13 转换为二进制

13 / 2 = 6 ... 余数 1
6 / 2 = 3  ... 余数 0
3 / 2 = 1  ... 余数 1
1 / 2 = 0  ... 余数 1

       二进制结果为 1101

二进制转十进制

       1. 从最低位开始,每一位乘以2的幂次(从0开始,一次递增)。

       2. 将所有结果相加。

       示例:将二进制数 1101 转换为十进制。

1*(2^3) + 1*(2^2) + 0*(2^1) + 1*(2^0) = 8 + 4 + 0 + 1 = 13

       十进制结果为 13

2.6.2 浮点数

  • 浮点数即小数,分为单精度浮点数(float)和双精度浮点数(double)两种类型。
  • 单精度浮点数后面以F或者f结尾,双精度浮点数后面以D或者d结尾,不加后缀默认为double。
  • 指数形式表示:5.022e+23f。
package com.syh;

public class Esther {
    public static void main(String[] args) {
        // 1.单精度浮点数
        System.out.println(100.0F);  // 100.0
        // 2.双精度浮点数
        System.out.println(100.0D);  // 100.0
        // 3.指数形式表示
        System.out.println(1e2);     // 100.0
    }
}

2.6.3 字符常量

       1.字符常量概述: 用于表示单个字符,用单引号(‘’)引起来,字符常量可以是字母、数字、转义字符等。

package com.syh;

public class Esther {
    public static void main(String[] args) {
        // 字符常量
        System.out.println('a');      // a
        System.out.println('1');      // 1
        System.out.println('\u0000'); // 空白字符
    }
}

       2.转义字符

       在Java中,转义字符用于在字符串字面量中表示那些无法直接输入的字符。转义字符以反斜杠(\)开头,后跟一个特定的字符或数字序列,表示一个特定的控制字符或其他特殊字符。以下是一些常见的Java转义字符:

转义序列描述
\n换行
\r回车
\t水平制表符
\\反斜杠
\"双引号
\'单引号
\b退格(backspace)
\f换页
\0空字符(null)
\ddd八进制字符(ddd表示1到3位八进制数)
\u000016进制Unicode字符(xxxx表示4位十六进制数)

2.6.4 字符串常量

       字符串常量用于表示多个字符,用双引号(“”)引起来

package com.syh;

public class Esther {
    public static void main(String[] args) {
        // 字符串常量
        System.out.println("HelloWorld");  // HelloWorld
        System.out.println('123');         // 123
    }
}

2.6.5 布尔常量

       布尔常量即布尔型的值,用于区分事物的真和假,布尔常量有true和false两个值

package com.syh;

public class Esther {
    public static void main(String[] args) {
        // 布尔常量
        System.out.println(true);  // true
        System.out.println(false); // false
    }
}

2.6.6 null常量

       null常量只有一个值null,表示对象的引用为空,它可以赋值给任何引用数据类型(类、接口、数组等)的变量,但不能赋值给基本数据类型(如 int, double, char 等)的变量。

package com.syh;

public class Esther {
    public static void main(String[] args) {
        // null常量
        Object obj = null;
        System.out.println(obj);
    }
}

2.6.7 查看常量类型

       1.使用 instanceof 运算符

package com.syh;

public class Esther {
    public static void main(String[] args) {
        // 1. 使用instanceof运算符查看常量类型
        Object number = 24;
        if (number instanceof Integer) {
            System.out.println(number + "是整型");
        } else {
            System.out.println(number + "不是整型");
        }
    }
}

       2.使用反射

package com.syh;

public class Esther {
    public static void main(String[] args) {
        // 1. 使用反射查看常量类型
        Object number = 24;
        String name = number.getClass().getName();
        System.out.println(name);     // java.lang.Integer(即为int整型)
    }
}

2.7 变量

2.7.1 变量的定义格式

       数据类型 变量名 = 数据值;

       例如:int a = 10;

2.7.2 Java代码示例

public class VariableDemo{
	public static void main(String[] args){
		//定义一个整数类型的变量
		//数据类型 变量名 = 数据值;
		int a = 10;
		System.out.println(a); 

		//定义一个小数类型的变量
		double b = 3.14;
		System.out.println(b);
	}
}

2.7.3 字符和字符串相加

       字符相加:首先会将字符转换为 ASCII码,然后再相加。

       字符串相加:字符串相加实际上为拼接操作。

package com.syh;

public class Esther {
    public static void main(String[] args) {
        // 1.字符相加
        char a = 'a';
        int b = 1;
        System.out.println(a + b);      // 98,a的ASCII码是97
        // 2.字符串相加
        String str1 = "abc";
        String str2 = "def";
        System.out.println(str1 + str2);
    }
}

2.7.4 变量的类型转换

       在Java中,类型转换分为两种:隐式类型转换(也称为自动类型转换)和显式类型转换(也称为强制类型转换)。

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

       隐式类型转换是Java自动执行的转换,当将一个低精度的数值类型赋值给高精度的数值类型时,或者将一个小范围的数值类型赋值给一个大范围的数值类型时,会发生隐式类型转换。

       例如:

int num = 10;         // int类型
double decimal = num; // 自动转换为double类型

       在这个例子中,int类型的num可以自动转换为double类型,因为double类型的范围比int大。

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

       显式类型转换需要程序员明确指出,通常在将高精度的数值类型赋值给低精度的数值类型时使用。显式类型转换可能会导致数据丢失或精度降低。以下是显式类型转换的语法:

       语法:目标数据类型 变量名 = (目标数据类型)被强转的数据;

       例如:

double decimal = 10.5;   // double类型
int num = (int) decimal; // 显式转换为int类型,小数部分会被丢弃

       在这个例子中,将double类型的decimal赋值给int类型的num时,必须使用(int)进行显式类型转换。由于int类型不支持小数,转换过程中小数部分会被丢弃。

注意事项

  • 精度丢失:在进行显式类型转换时,如果目标类型无法容纳原始值,可能会导致数据丢失或精度降低。
  • 类型兼容性:并非所有类型之间都可以进行转换。例如,不能将非数值类型转换为数值类型,除非进行了适当的转换或解析。
  • 包装类转换:除了基本数据类型之间的转换,Java还提供了包装类(如Integer, Double等)之间的转换方法。

       显式类型转换时应当谨慎使用,确保不会丢失重要的数据或引入错误。在编写代码时,应当尽可能利用隐式类型转换,以保持代码的清晰和安全性。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值