前言:如果你之前学过C/C++语言,那么对于此部分内容可快速浏览,因为它们的很多地方都是相似的。
1.核心概念
JVM:JAVA虚拟机
源文件(食材)->编译器(菜刀)->字节码文件(切好的食物)->解释器(炊具)->完成
JDK:JAVA开发工具包
JRE:JAVA运行环境。
当安装完JDK以后,实际上就已经有了JRE和JVM。

2.使用记事本编写java程序
a.新建记事本文件,重命名为HelloWorld.java(需要在记事本显示扩展名为.txt时重命名,否则重命名结果就会变成HelloWorld.java.txt)
b.编写源文件,保存文件在磁盘根目录,便于编译,执行
c.编译
开始键搜索框输入cmd进入控制台,输入X:回车(X代表源代码文件保存的位置,如D或者D/Java等等),再输入dir可以查看源文件是否存在此于目录。
输入javac HelloWorld.java回车,没有错误的话,与源文件同目录下会生成一个名为HelloWorld.class的字节码文件,编译阶段完成。
d.执行
控制台输入java HelloWorld回车(切记没有.class后缀),结果显示“welcome to imooc !”,执行成功。
注意:
扩展名:计算机->菜单工具->文件夹选项->查看->隐藏扩展名前的勾去掉即可。
public class跟的名字必须与文件名相同。

public class HelloWorld{
  public static void main(String[] args){
    System.out.println("welcome to imooc!");
  }
}

3.编码流程(使用IDEA)
a.创建java项目:java project (src 是存放源代码文件)
b.创建程序包:src目录下右击建(package程序包)
创建程序包的目的是便于程序的管理,便于源代码文件的管理。我们可以将不同的源代码文件放到指定的包下面,避免重名问题。
一般包名为为域名的反向,例如com.imooc
c.编写java源程序:package目录下右击建(class源代码文件)
d.运行java程序:源文件空白处右击选择run 运行成功

4.Java标识符
标识符就是用于给 Java 程序中变量、类、方法等命名的符号。
使用标识符时,需要遵守几条规则:
a.标识符可以由字母、数字、下划线(_)、美元符($)组成,但不能包含 @、%、空格等其它特殊字符,不能以数字开头。譬如:123name 就是不合法的。
b.标识符不能是 Java 关键字和保留字( Java 预留的关键字,以后的升级版本中有可能作为关键字),但可以包含关键字和保留字。如:不可以使用 void 作为标识符,但是 Myvoid 可以。
c.标识符是严格区分大小写的。 所以,一定要分清楚 one 和 One 是两个不同的标识符哦!
d. 标识符的命名最好能反映出其作用,做到见名知意。

5.变量

在 Java 中,我们通过三个元素描述变量:变量类型、变量名以及变量值。

例如,我们定义了一个变量 love ,用来保存一个字符串 “imooc” , 在程序中只要找到了 love 这个变量,就能找到存储在里面的 ”imooc”!当然,我们也可以把 love 里面的值更换成新的字符串 “i love imooc” !

java 记事本状态栏怎么做 java记事本总结_Java


运行结果:

java 记事本状态栏怎么做 java记事本总结_标识符_02


6.变量的命名方式

a.变量名由多单词组成时,第一个单词的首字母小写,其后单词的首字母大写,俗称骆驼式命名法(也称驼峰命名法),如 myAge

b.变量命名时,尽量简短且能清楚的表达变量的作用,做到见名知意。如:定义变量名 stuName 保存“学生姓名”信息

ps:Java 变量名的长度没有限制,但 Java 语言是区分大小写的,所以 price 和 Price 是两个完全不同的变量哦!7.Java中的数据类型

Java 语言是一种强类型语言。通俗点说就是,在 Java 中存储的数据都是有类型的,而且必须在编译时就确定其类型。

Java 中有两类数据类型:

java 记事本状态栏怎么做 java记事本总结_java_03


java 记事本状态栏怎么做 java记事本总结_编程语言_04


需要注意的是:

java 记事本状态栏怎么做 java记事本总结_java_05


String 是一种常见的引用数据类型,用来表示字符串。在程序开发中,很多操作都要使用字符串来完成,例如系统中的用户名、密码、电子邮箱等。

8.Java中变量使用规则
Java中变量的使用规则
a.Java 中的变量需要先声明后使用
b.变量使用时,可以声明变量的同时进行初始化
c.变量中每次只能赋一个值,但可以修改多次
d.main 方法中定义的变量必须先赋值,然后才能输出
e.虽然语法中没有提示错误,但在实际开发中,变量名不建议使用中文,容易产生安全隐患,譬如后期跨平台操作时出现乱码等等

9.强制类型转换

当程序中需要将 double 型变量的值赋给一个 int 型变量时,这种转换是不会自动进行的,因为 int 型的存储范围比 double 型的小,此时就需要通过强制类型转换来实现了。

java 记事本状态栏怎么做 java记事本总结_java 记事本状态栏怎么做_06


运行结果:

75.8

75

可以看到,通过强制类型转换将 75.8 赋值给 int 型变量后,结果为 75,数值上并未进行四舍五入,而是直接将小数位截断。10.Java常量的应用

所谓常量,我们可以理解为是一种特殊的变量,它的值被设定后,在程序运行过程中不允许改变。

语法:final 常量名 = 值;

java 记事本状态栏怎么做 java记事本总结_标识符_07


程序中使用常量可以提高代码的可维护性。例如,在项目开发时,我们需要指定用户的性别,此时可以定义一个常量 SEX,赋值为 “男”,在需要指定用户性别的地方直接调用此常量即可,避免了由于用户的不规范赋值导致程序出错的情况。

注意啦:常量名一般使用大写字符11.Java中的注释

在编写程序时,经常需要添加一些注释,用以描述某段代码的作用。

一般来说,对于一份规范的程序源代码而言,注释应该占到源代码的 1/3 以上。

Java 中注释有三种类型:单行注释、多行注释、文档注释。

java 记事本状态栏怎么做 java记事本总结_编程语言_08

12.算术运算符

算术运算符主要用于进行基本的算术运算,如加法、减法、乘法、除法等。

Java 中常用的算术运算符:

java 记事本状态栏怎么做 java记事本总结_java 记事本状态栏怎么做_09


其中,++ 和 – 既可以出现在操作数的左边,也可以出现在右边,但结果是不同的。

java 记事本状态栏怎么做 java记事本总结_Java_10


运行结果:

java 记事本状态栏怎么做 java记事本总结_标识符_11


java 记事本状态栏怎么做 java记事本总结_java_12


运行结果:

java 记事本状态栏怎么做 java记事本总结_编程语言_13


自增和自减运算符只能用于操作变量,不能直接用于操作数值或常量!例如 5++ 、 8-- 等写法都是错误的!

PS:% 用来求余数,也称为”取模运算符“。13.赋值运算符

赋值运算符是指为变量或常量指定数值的符号。如可以使用 “=” 将右边的表达式结果赋给左边的操作数。

Java 支持的常用赋值运算符,如下表所示:

java 记事本状态栏怎么做 java记事本总结_标识符_14

14.比较运算符

比较运算符用于判断两个数据的大小,例如:大于、等于、不等于。比较的结果是一个布尔值( true 或 false )。

Java 中常用的比较运算符如下表所示:

java 记事本状态栏怎么做 java记事本总结_java 记事本状态栏怎么做_15


注意哦:

a. > 、 < 、 >= 、 <= 只支持左右两边操作数是数值类型

b. == 、 != 两边的操作数既可以是数值类型,也可以是引用类型

15.逻辑运算符

逻辑运算符主要用于进行逻辑运算。Java 中常用的逻辑运算符如下表所示:

java 记事本状态栏怎么做 java记事本总结_标识符_16


当使用逻辑运算符时,我们会遇到一种很有趣的“短路”现象。

譬如:( one > two ) && ( one < three ) 中,如果能确定左边 one > two 运行结果为 false , 则系统就认为已经没有必要执行右侧的 one < three 啦。

同理,在( one > two ) || ( one < three ) 中,如果能确定左边表达式的运行结果为 true , 则系统也同样会认为已经没有必要再进行右侧的 one < three 的执行啦!

16.条件运算符
条件运算符( ? : )也称为 “三元运算符”。
语法形式:布尔表达式 ? 表达式1 :表达式2
运算过程:如果布尔表达式的值为 true ,则返回 表达式1 的值,否则返回 表达式2 的值。

17.运算符的优先级

java 记事本状态栏怎么做 java记事本总结_Java_17


PS:大家没必要去死记运算符的优先级顺序,实际开发中,一般会使用小括号辅助进行优先级管理。例如:

java 记事本状态栏怎么做 java记事本总结_java_18


结果为2418.条件语句之if

语法:

java 记事本状态栏怎么做 java记事本总结_编程语言_19


执行过程:

java 记事本状态栏怎么做 java记事本总结_标识符_20


注意哦:如果 if 条件成立时的执行语句只有一条,是可以省略大括号的!但如果执行语句有多条,那么大括号就是不可或缺的。19.条件语句之if…else

语法:

java 记事本状态栏怎么做 java记事本总结_java 记事本状态栏怎么做_21


执行过程:

java 记事本状态栏怎么做 java记事本总结_Java_22

20.条件语句之多重if

多重 if 语句,在条件 1 不满足的情况下,才会进行条件 2 的判断;当前面的条件均不成立时,才会执行 else 块内的代码。

语法:

java 记事本状态栏怎么做 java记事本总结_java_23


执行过程:

java 记事本状态栏怎么做 java记事本总结_编程语言_24

21.条件语句之嵌套if

嵌套 if 语句,只有当外层 if 的条件成立时,才会判断内层 if 的条件。

语法:

java 记事本状态栏怎么做 java记事本总结_java_25


执行过程:

java 记事本状态栏怎么做 java记事本总结_标识符_26

22.条件语句之switch

当需要对选项进行等值判断时,使用 switch 语句更加简洁明了。

语法:

java 记事本状态栏怎么做 java记事本总结_java_27


执行过程:当 switch 后表达式的值和 case 语句后的值相同时,从该位置开始向下执行,直到遇到 break 语句或者 switch 语句块结束;如果没有匹配的 case 语句则执行 default 块的代码。

例如:

java 记事本状态栏怎么做 java记事本总结_java_28


需要注意的是:

a.switch 后面小括号中表达式的值必须是整型或字符型

b.case 后面的值可以是常量数值,如 1、2;也可以是一个常量表达式,如 2+2 ;但不能是变量或带有变量的表达式,如 a * 2

c.case 匹配后,执行匹配块里的程序代码,如果没有遇见 break 会继续执行下一个的 case 块的内容,直到遇到 break 语句或者 switch 语句块结束。如:

java 记事本状态栏怎么做 java记事本总结_Java_29


运行结果:

java 记事本状态栏怎么做 java记事本总结_标识符_30


d.可以把功能相同的 case 语句合并起来,如:

java 记事本状态栏怎么做 java记事本总结_java_31


e.default 块可以出现在任意位置,也可以省略。23.循环语句之while

语法:

java 记事本状态栏怎么做 java记事本总结_Java_32


执行过程:

a.判断 while 后面的条件是否成立( true / false )

b.当条件成立时,执行循环内的操作代码 ,然后重复执行a、b, 直到循环条件不成立为止。

特点:先判断,后执行。23.循环语句之do…while

语法:

java 记事本状态栏怎么做 java记事本总结_java 记事本状态栏怎么做_33


执行过程:

a.先执行一遍循环操作,然后判断循环条件是否成立

b.如果条件成立,继续执行a、b,直到循环条件不成立为止

特点: 先执行,后判断

由此可见,do…while 语句保证循环至少被执行一次24.循环语句之for

语法:

java 记事本状态栏怎么做 java记事本总结_标识符_34


执行过程:

a.执行循环变量初始化部分,设置循环的初始状态,此部分在整个循环中只执行一次。

b.进行循环条件的判断,如果条件为 true ,则执行循环体内代码;如果为 false ,则直接退出循环。

c.执行循环变量变化部分,改变循环变量的值,以便进行下一次条件判断

d.依次重新执行b,c,d,直到退出循环

特点:相比 while 和 do…while 语句结构更加简洁易读。

注意:

for 循环变量初始化和循环变量变化部分,可以是使用 “,” 同时初始化或改变多个循环变量的值,如:

java 记事本状态栏怎么做 java记事本总结_java_35


运行结果:

java 记事本状态栏怎么做 java记事本总结_Java_36


24.循环跳转语句之break

在 Java 中,我们可以使用 break 语句退出指定的循环,直接执行循环后面的代码。

25.循环跳转语句之continue
continue 的作用是跳过循环体中剩余的语句执行下一次循环。

26.注意:System.out.println是换行的, System.out.print不换行。

27.如果想从控制台输入数据:

import java.util.Scanner;// 导入包(这一步在package下方完成)
 Scanner input = new Scanner(System.in);// 定义对象
 int score = input.nextInt(); // 获取用户输入


例如:

input.next();//获取String类型数据
 input.nextDouble();//double类型
 input.nextInt();//int类型