Java 学习第一天:环境配置 + 基础语法全梳理

21 阅读9分钟

写在前面

笔者想走Java后端就业的路子,参考网上大佬的Java学习路线学习Java,在这里记录一下我的学习进度。

由于笔者有一年C++基础,所以在基础语法部分会与C++有一些联系,并且节奏较快

注:本专栏内容是学习黑马程序员的网课得来,再加上笔者自己的理解

Java环境配置

(1)JDK下载

在windows系统上使用Java要先下载JDK,笔者下载的是JDK24,推荐下载JDK21/17

网站:www.oracle.com/java/techno…

下载哪个版本读者请自便

(2)IDE安装

集成开发环境我用的是IDEA完整版,如果预算充足可以安排完整版,如果经济窘迫可以使用社区版或者破解版

网站:www.jetbrains.com/idea/downlo…

(3)配置JDK环境变量

找到 JDK 安装根目录(比如C:\Program Files\Java\jdk1.8.0_391不要带 bin 目录),复制路径;

右键「此电脑」→「属性」→「高级系统设置」→「环境变量」;

「系统变量」中新建,变量名:JAVA_HOME,变量值:粘贴刚才的 JDK 根目录路径;

找到「系统变量」中的Path编辑新建一行,输入:%JAVA_HOME%\bin,保存所有设置;

关闭原有命令行,重新打开,执行验证命令:

java -version  # 查看Java运行环境版本
javac -version # 查看Java编译器版本

然后现在打开IDEA正常创建项目应该是可以识别到JDK的

(4)IDEA项目结构

使用IDEA时要注意项目结构,是一层一层的

由大到小的顺序为:project(项目)>module(模块)>package(包)>class(类),前包含后

标准格式应当是这样:

test(项目根目录)
├─ .idea(IDE配置目录,自动生成)
├─ out(编译输出目录,自动生成)
├─ src(源码目录)
│  └─ com
│     └─ yxc
│        └─ demo(包名,按公司/个人域名反向命名,避免冲突)
│           ├─ controller(业务接口层)
│           │  └─ UserController.java
│           ├─ service(业务逻辑层)
│           │  └─ UserService.java
│           ├─ dao(数据访问层)
│           │  └─ UserDao.java
│           └─ Main.java(程序入口类)
└─ test.iml(模块配置文件)

笔者解释一下这个视图:

test就是项目根目录,.idea是自动生成的配置文件,out是编译输出目录,src是源码目录,.iml是模块配置文件

模块要放在项目里,包要放在src里,类要放在包里

包的命名规则:用小写字母,以公司 / 个人域名反向开头(如 com.yxc.demo

每个类必须放在包内,开头用 package com.yxc.demo; 声明所属包。

Java基础语法

(1)注释和关键字

注释是每个编程语言都有的部分,而Java的注释格式也很常规,有三种:

单行注释:

//注释内容

多行注释:

/*注释内容
注释内容*/

文档注释:

/**
 *注释内容
 *注释内容
 *注释内容
 */

注释主要起到的是解释代码的作用

关键字就是在Java中有特殊意义的单词,在各个编程语言中都有

注:关键字的单词每个字母都是小写

类似class、public、private等等都是关键字,在编辑器中有特殊颜色标识

(2)字面量与变量

字面量是程序中直接表示的 “常量值”,是数据的具体表现形式,包括:整数、小数、字符串、字符、布尔、空(null),还有类似制表符一类特殊的字面量

注:字符由单引号括起来,字符串由双引号括起来

变量就是在程序中存储数据的东西,它起到的是存储的作用

定义格式:数据类型 变量名 = 数据值,数据类型起到的是限制作用,限制变量的类型就是上文的字面量

(3)数据类型

数据类型分为基本数据类型和引用数据类型

基本数据类型有四类八种:

注:使用long和float时,赋值一定要加入"L/l"、"F/f"后缀,最好使用大写后缀

如:

float f = 3.14F;
long num = 100L;

引用数据类型包括数组、类、接口,后边会详细讲到

数据类型转换:

数据类型转换分为隐式转换和强制转换,隐式转换是系统自带的转换,规则是:范围小的转换为范围大的再运算

范围大小:byte<short<int<long<float<double

注:byte、short、char相互运算时都会转成Int

强制类型转换是范围大的转换为范围小的,格式:

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

拆箱和装箱:

这是将基本数据类型和对象互相转换的操作,适用于一些必须操作对象的情况

核心原理是Java为每个基本数据类型都提供了一个包装类,装箱是基本数据类型自动转换为对应的包装类对象拆箱是包装类对象自动转换为对应的基本数据类型

语法格式:

装箱:

自动:包装类 变量 = 基本类型值;
手动:包装类 变量 = 包装类.valueOf(基本类型值);

拆箱:

自动:基本类型 变量 = 包装类对象;
手动:基本类型 变量 = 包装类对象.xxxValue();

(4)标识符(命名规则)

标识符就是给类、方法、变量等起的名字

标识符命名规则:

1.由数字、字母、下划线、$组成

2.不能以数字开头

3.不能是关键字

4.区分大小写

行业命名规范:

小驼峰命名法:适用于方法和变量

1.标识符是一个单词时全部小写

2.标识符由多个单词组成时,第一个单词首字母小写,其余单词首字母大写

大驼峰命名法:适用于类

1.标识符是一个单词时首字母大写

2.标识符由多个单词组成时,每个单词首字母大写

常量等全部使用大写字母表示

(5)键盘录入

键盘录入适用于需要用户在键盘输入内容的情况

步骤:

1.导包

import java.util.Scanner

这一步必须出现在类定义之前

2.创建对象

Scanner 变量名 = new Scanner(System.in);

3.接收数据

数据类型 变量名 = 上一步的变量名.next数据类型名();

举个例子方便理解:

Scanner sc = new Scanner(System.in);
int i = sc.nextInt();

(6)运算符和表达式

运算符就是类似+、-、*、/这样的,用来操作字面量和变量

用运算符把字面量或变量连接起来的式子就叫做表达式

算数运算符:+、-、*、/、%、自增(++)、自减(--),除法规则是:只要有一个操作数是 floatdouble 类型,/ 就会执行浮点除法,结果保留小数部分

注:当有"+"运算符且操作数为字符串型时,其就变成连接符号,作用是拼接字符串;且字符串可以与数字型运算,有字符串部分时才是拼接,若有连续多个"+",则从左到右依次执行

自增自减运算符分为前置后置,前置是先算后用,后置是先用后算

赋值运算符:=、+=、-=、*=、/=、%=,作用是将左数与右数计算之后赋值给左数

关系运算符:==、!=、<、>、<=、>=,返回结果都是boolen型的

逻辑运算符:&(与)、|(或)、!(非)、^(异或),规则与C++一致,分别为全真为真、有一个即为真、取反、相同为假不同为真,这几个运算符既可以用来判断布尔类型,在整数类型运算时也可以作为位运算符

更加常用的短路逻辑运算符:&&(短路与)、||(短路或),作用为只要左边能得到结果则直接返回结果不看右边,节省开销

三元运算符:关系表达式?表达式1:表达式2,内表达式结果为真则外表达式结果为表达式1,内表达式结果为假则外表达式结果为表达式2

运算符的优先级不需要过多考虑,如果不确定可以直接用()规定

程序控制结构

程序控制结构分为顺序、选择、循环,程序控制结构就是程序运行方式,由这三种就可以实现一切功能 

(1)顺序

顺序结构最简单,程序默认就是顺序完成每一句代码

(2)选择

选择结构由判断组成,通过判断语句来决定是否执行下一句话

if判断语句从易到难一共有三种格式:

if(判断条件){
    代码块
}

如果判断条件符合则执行括号里的代码

if(判断条件1){
    代码块1
}
else {
    代码块2
}

如果判断条件1符合,则执行代码块1,否则执行代码块2

if(判断条件1){
    代码块1
}
else if(判断条件2){
    代码块2
}
else if(判断条件3){
    代码块3
}
………………
else{
    最后一个代码块
}

可以一直判断,如果都不符合就执行最后一个代码块

注:判断条件里的结果只能是布尔类型

switch语句也是判断语句的一种,在某些情况下比if else语句更好用

格式:

switch(表达式){
    case1:
        语句体1;
        break;
    case2:
        语句体2;
        break;
    ……
    default:
        语句体n+1;
        break;
}

会将表达式的值与case里的依次比较,等于哪个就执行哪个,若是都没有则执行default

注:一定要写break,否则会触发case穿透,一直执行到下一个break或结束为止

switch在JDK14之后优化了,有了更简单的写法:

switch(表达式) {
    case1 -> {
        语句体1;
    }
    case2 -> {
        语句体2;
    }
    // 多个case可以合并(用逗号分隔)
    case3, 值4 -> {
        语句体3;
    }
    // 箭头后只有一行代码时,可省略大括号
    case5 -> 语句体4;
    default -> {
        语句体n+1;
    }
}

(3)循环

循环结构就是重复做一件事,直到达成某个条件后跳出循环

常用的循环语句有for循环和While循环,do while循环笔者用的并不多

for循环语句格式:

for(初始化语句;条件判断语句;条件控制语句){
    循环体
}

//举个例子:
for(int i=0;i<10;i++){
    sout("这里是计梦星河")// 在IDEA里sout+Tab键可以直接变成标准输出语句
}

符合条件判断语句则继续循环,不符合就跳出循环

While循环语句格式:

While(条件判断语句){
    循环体;
    条件控制语句
}

//举个例子
int i=0;
While(i<=10)
{
    sout("这里是计梦星河");
    i++;
}

与for循环跳出规则一致

跳出循环有两个关键字:continue和break

continue的作用是跳出这一层循环,即直接到下一层循环

break的作用是直接跳出循环,执行循环后的语句

循环的妙用:无限循环,笔者最常用的写法是:while(true),这样的话如果没用break循环将永不会结束

写在最后

本篇博客主要记录了Java的基础语法,与C++相似度极高,所以仅仅是简单记录,这些语法的各种妙用在未来写代码时一定可以找到的

后续会更新Java的数组、面向对象等部分