本文主要是介绍Java基础回顾系列-第一天-基本语法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
基本语法
- Java基础回顾系列-第一天-基本语法
- 基础常识
- 人机交互方式
- 常用的DOS命令
- 什么是计算机语言(编程语言)
- Java语言简介
- Java程序运行机制
- Java虚拟机(Java Virtual Machine)
- 垃圾收集机制(Garbage Collection)
- Java语言的特点
- 面向对象
- 健壮性
- 跨平台性
- 编写第一个Java程序
- 什么是JDK, JRE
- 下载及安装 JDK
- 配置环境变量 path
- HelloWorld 类
- HelloWorld 细节
- Java 基本语法
- Java 注释
- Java API文档
- 关键字
- 标识符
- 常量
- 变量
- 变量的概念
- 变量的定义
- 变量的使用
- 变量的分类
- 按被声明的位置划分
- 按所属的数据类型划分
- 基础数据类型
- 整形类型(byte、short、int、long)
- 浮点类型(float、double)
- 字符类型(char)
- 布尔类型(boolean)
- 基本数据类型转换
- 自动类型转换(隐式类型转换)
- 强制类型转换
- 引用数据类型
- 进制
- 运算符
- 算术运算符
- 赋值运算符
- 比较运算符(关系运算符)
- 逻辑运算符
- 位运算符
- 三元运算符(三目运算符)
- instanceof 运算符
- 程序逻辑控制
- 选择结构
- if 语句
- switch 语句
- switch语句和if语句的各自使用场景
- 循环结构
- while 循环
- do while 循环
- for 循环
- Java 增强 for 循环
- 死循环和循环语句对比
- 嵌套循环
- 嵌套循环性能优化案例
- 控制循环结构
- break 语句
- continue 语句
- return 语句
- 控制外层循环
- 方法
- 方法的定义
- 方法的重载
- 数组
- 一维数组
- 多维数组
- Arrays 工具类
Java基础回顾系列-第一天-基本语法
基础常识
人机交互方式
- 图形化界面(Graphical User Interface GUI)这种方式简单直观,使用者易于接受,容易上手操作。
- 命令行方式(Command Line Interface CLI):需要有一个控制台,输入特定的指令,让计算机完成一些操作。较为麻烦,需要记录住一些命令。
常用的DOS命令
- dir(directory):列出当前目录下的文件以及文件夹
- md(make directory):创建目录
- rd(remove directory):删除目录
- cd(change directory):进入指定目录
cd ..
:退回到上一级目录cd \..
:退回到根目录- exit:退出 dos 命令行
什么是计算机语言(编程语言)
人与计算机交流的方式。如果人要与计算机交流,那么就要学习计算机语言。计算机语言有很多种,如:C,C++,Java,PHP等。
Java语言简介
Java程序运行机制
Java虚拟机(Java Virtual Machine)
- JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器。
- JVM 用于运行 Java 应用程序
- 对于不同的平台,有不同的虚拟机。
- Java虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行”。
垃圾收集机制(Garbage Collection)
- 垃圾回收:将不再使用的内存空间进行回收。
- 在 C/C++ 等语言中,由程序员负责回收无用内存。
- Java 不需要程序员负责回收无用的内存:它提供一种系统级线程跟踪存储空间的分配情况。并在JVM空闲时,检查并释放那些可被释放的存储空间。
- 垃圾回收在 Java 程序运行过程中自动进行,程序员无法精确控制和干预。
Java语言的特点
面向对象
- 两个基本概念:类、对象
- 三大特性:封装、继承、多态
健壮性
吸收了C/C++语言的优点,但去掉了其影响程序健壮性的部分。如:指针、内存的申请与释放等
跨平台性
- 跨平台性:通过Java语言编写的应用程序在不同的系统平台上都可以运行。
- 原理:只要在需要运行 java 应用程序的操作系统上,先安装一个Java虚拟机 (JVM Java Virtual Machine) 即可。由JVM来负责Java程序在该系统中的运行。
编写第一个Java程序
什么是JDK, JRE
简单而言,使用 JDK 的提供的开发工具完成 java 程序的开发,使用 JRE 运行开发好的 Java 应用程序。
JDK(Java Development Kit Java开发工具包):JDK是提供给 Java 开发人员使用的,其中包含了 java 的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。
JRE(Java Runtime Environment Java运行环境) :包括Java虚拟机(JVM:Java Virtual Machine)和 Java 程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。
下载及安装 JDK
官方网址:www.oracle.com
注意: 当提示安装 JRE 时,可以选择不安装。
配置环境变量 path
- 每次执行 java 的工具都要进入到 bin 目录下,是非常麻烦的。
- 根据windows系统在查找可执行程序的原理,可以将java工具所在路径定义到 path 环境变量中,让系统帮我们去找运行执行的程序。
配置方法:
- 进入桌面–选择“此电脑”–右键“属性”–选择“高级系统设置”–环境变量–系统变量–新建JAVA_HOME=D:\Program Files\Java\jdk-11.0.2
- 编辑 path 环境变量,在变量值开始处加上"%JAVA_HOME%\bin",后面用 “ ; ”和其他值分隔开即可。
- 打开DOS命令行,任意目录下敲入javac。如果出现javac 的参数信息,配置成功。
提示:Windows 10 配置Java 环境变量:http://www.runoob.com/w3cnote/windows10-java-setup.html
HelloWorld 类
public class HelloWorld {public static void main(String[] args) {System.out.println("Hello World");}
}
HelloWorld 细节
- main的方法:Java应用程序的执行入口是main()方法。它有固定的书写格式:
public static void main(String[] args) {...}
如果没有 main 方法则在运行时会抛出如下异常:
- 想要和JVM来个互动,只要在main方法中加入一句
System.out.println("Hello World");
- 一个 Java 源文件中最多只能有一个 public 类。其它类的个数不限,如果源文件文件包含一个 public 类,它必须是该类名命名。
- Java 语言严格区分大小写。
- Java方法由一条条语句构成,每个语句以分号结束。
Java 基本语法
Java 注释
// 单行注释
/* 多行注释 */
/** 文档注释javadoc */
对于单行和多行注释,被注释的文字,不会被JVM(java虚拟机)解释执行。
多行注释里面不允许有多行注释嵌套。
Java API文档
API (Application Programming Interface,应用程序编程接口)是 Java 提供的基本编程接口。
官网地址:https://docs.oracle.com/en/java/javase/
Java语言提供了大量的基础类,因此 Oracle 也为这些基础类提供了相应的API文档,用于告诉开发者如何使用这些类,以及这些类里包含的方法。
关键字
关键字的定义和特点
定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)
特点:关键字中所有字母都为小写
标识符
Java 对各种变量、方法和类等要素命名时使用的字符序列称为标识符
凡是自己可以起名字的地方都叫标识符。
定义合法标识符规则:
- 由26个英文字母大小写,数字:0-9 ,_或 $ 组成数字不可以开头。
- 不可以使用关键字和保留字,但能包含关键字和保留字。
- Java中严格区分大小写,长度无限制。
- 标识符不能包含空格。
注意: 在起名字的时,为了提高阅读性,要尽量有意义,“见名知意”。
常量
程序中固定不变的值。
需注意基本类型与引用类型的区别。
final double PI = 3.14159;
变量
变量的概念
- 内存中的一个存储区域
- 该区域有自己的名称(变量名)和类型(数据类型)
- Java中每个变量必须先声明,后使用
- 该区域的数据可以在同一类型范围内不断变化
变量的定义
数据类型 变量名 = 初始化值
变量的使用
变量是通过使用变量名来访问这块区域的。
Java是强类型语言,每个变量必须先声明类型,后使用。
变量的作用域:一对{ }
之间有效。
变量的分类
按被声明的位置划分
- 成员变量:方法外部、类的内部定义的变量。
- 局部变量:方法或语句块内部定义的变量。
注意: 类外面(类对应的大括号外面)不能有变量的声明。
按所属的数据类型划分
基本数据类型变量
引用数据类型变量
基础数据类型
参考使用原则:
- ==如果要是描述数字首选一定是int(整数)、double(小数)
- 如果要是进行数据传输或者文字编码转换使用byte类型(二进制处理操作)
- 处理中文的时候最方便的操作使用char(字符)
- 描述文件大小、描述表的主键列(自动增长)可以使用long
整形类型(byte、short、int、long)
注意: Java 的整型常量默认为 int
型,声明 long
型常量须后加 ‘l
’ 或 ‘L
’,推荐大写’L
’,因为小写的跟数字一很相像。
浮点类型(float、double)
float表示单精度类型;double表示双精度类型。
注意: Java 的浮点型常量默认为 double
型,声明 float
型常量,须后加 ‘f
’ 或 ‘F
’。
浮点型常量有两种表示形式:
十进制数形式:如:5.12 512.0f .512 (必须有小数点)
科学计数法形式:如:5.12e2 512E2 100E-2
字符类型(char)
char 型数据用来表示通常意义上"字符"。
字符型常量的三种表现形式:
- 字符常量是用单引号(
''
)括起来的单个字符,涵盖世界上所有书面语的字符。例如:char c1 = 'a'; char c2 = '中'; char c3 = '9';
- Java中还允许使用转义字符’
\
'来将其后的字符转变为特殊字符型常量。例如:char c3 = '\n'; -- '\n'
表示换行符 - 直接使用 Unicode 值来表示字符型常量:’
\uXXXX
’。其中,XXXX代表一个十六进制整数。如:\u000a
表示\n
。
布尔类型(boolean)
boolean 类型适于逻辑运算,一般用于程序流程控制:
if条件
控制语句;while循环
控制语句;do-while循环
控制语句;for循环
控制语句;
注意:boolean类型数据只允许取值true
和false
,不可以0或非 0 的整数替代true和false,这点和C语言不同。
基本数据类型转换
自动类型转换(隐式类型转换)
容量小的类型自动转换为容量大的数据类型。 数据类型按容量大小排序为:
- 有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。
- byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型。
- 当把任何基本类型的值和字符串值进行连接运算时(+),基本类型的值将自动转化为字符串类型。
强制类型转换
自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符(()),但可能造成精度降低或溢出,格外要注意。
注意:
- 通常,字符串不能直接转换为基本类型,但通过基本类型对应的包装类则可以实现把字符串转换成基本类型。 如:
String a = "43"; int i = Integer.parseInt(a);
- boolean类型不可以转换为其它的数据类型。
引用数据类型
除了8种基本数据类型之外,其它的所有类型都是引用类型,包括类、接口、数组。引用类型的默认值都是null
。
进制
二进制:0,1 ,满 2 进 1.以 0b 或 0B 开头。
十进制:0-9 ,满 10 进 1.
八进制:0-7 ,满 8 进1. 以数字 0 开头表示。
十六进制:0-9 及 A-F,满 16 进1. 以 0x 或 0X开头表示。此处的A-F不区分大小写。
所有数字在计算机底层都以二进制形式存在。
计算机以补码的形式保存所有的整数。
正数的补码与其原码相同;负数的补码是在其反码的末位加1。
原码:直接将一个数值换成二进制数。
反码:是对原码按位取反,只是最高位(符号位)保持不变。
Java整数常量默认是int类型,当用二进制定义整数时,其第32位是符号位;当是long类型时,二进制默认占64位,第64位是符号位。
运算符
算术运算符
注意:
- 如果对负数取模,可以把模数负号忽略不记,如:
5%-2=1
。 但被模数是负数就另当别论。 - 对于除号
"/"
,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。 例如:int x=3510;x=x/1000*1000; x的结果是3000 "+"
除字符串相加功能外,还能把非字符串转换成字符串;例如:System.out.println("5+5="+5+5); //打印结果是?5+5=55
赋值运算符
符号:=
扩展赋值运算符: *+=, -=, =, /=, %=
比较运算符(关系运算符)
注意:
- 比较运算符的结果都是
boolean型
,也就是要么是true
,要么是false
。 - 比较运算符
"=="
不能误写成"="
。
逻辑运算符
注意: 逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 && x<6 。
&和&&的区别:
- 单&时,左边无论真假,右边都进行运算;
- 双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
和||
的区别同理,双或时,左边为真,右边不参与运算。
异或( ^
)与或(|
)的不同之处是:对于 ^
而言,当左右都为true
时,结果为false
。
位运算符
位运算是直接对二进制进行运算
三元运算符(三目运算符)
格式:
(条件表达式)?表达式1:表达式2;
- 如果条件为true,运算后的结果是表达式1;
- 如果条件为false,运算后的结果是表达式2;
instanceof 运算符
该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)。
使用格式如下:
( Object reference variable ) instanceof (class/interface type)
String name = "James";
boolean result = name instanceof String; // 由于 name 是 String 类型,所以返回真
程序逻辑控制
选择结构
if 语句
// 语法一:if
if(布尔表达式) {//如果布尔表达式为true将执行的语句
}// 语法二:if...else
if(布尔表达式){//如果布尔表达式的值为true
}else{//如果布尔表达式的值为false
}// 语法三:if...else if...else
// 注意:一旦其中一个 else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行。
if(布尔表达式 1){//如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){//如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){//如果布尔表达式 3的值为true执行代码
}else {//如果以上布尔表达式都不为true执行代码
}
// 只会输出1
public static void main(String[] args) {int b = 6;if(3<b)System.out.println("1");else if(3<b)System.out.println("2");else if(3<b)System.out.println("4");elseSystem.out.println("3");
}// 语法四:嵌套if…else
if(布尔表达式 1){如果布尔表达式 1的值为true执行代码if(布尔表达式 2){如果布尔表达式 2的值为true执行代码}
}
switch 语句
// 语法
switch(expression){case value ://语句break; //可选case value ://语句break; //可选//你可以有任意数量的case语句default : //可选//语句
}
使用规则:
- switch 语句中的变量类型可以是:
byte
、short
、int
或者char
。从 Java SE 7 开始,switch 支持字符串String
类型了,同时 case 标签必须为字符串常量或字面量。 - switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。
- case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。
- 当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。
- 当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。
- switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句。
switch case 执行时,一定会先进行匹配,匹配成功返回当前 case 的值,再根据是否有 break,判断是否继续输出,或是跳出判断。
switch语句和if语句的各自使用场景
switch
建议判断固定值的时候用;
if
建议判断区间或范围的时候用。
提示: 用switch
能做的,用if
都能做,单反过来则不行。
循环结构
顺序结构的程序语句只能被执行一次。如果您想要同样的操作执行多次,,就需要使用循环结构。
Java中有三种主要的循环结构:
while 循环
do…while 循环
for 循环
while 循环
// 语法
while( 布尔表达式 ) {//循环内容
}
do while 循环
对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。
do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。
do {//代码语句
}while(布尔表达式);
注意: 布尔表达式在循环体的后面,所以语句块在检测布尔表达式之前已经执行了。 如果布尔表达式的值为 true,则语句块一直执行,直到布尔表达式的值为 false。
for 循环
虽然所有循环结构都可以用 while 或者 do…while表示,但 Java 提供了另一种语句 —— for 循环,使一些循环结构变得更加简单。
for循环执行的次数是在执行前就确定的。语法格式如下:
// 语法
for(初始化; 布尔表达式; 更新) {//代码语句
}
关于 for 循环有以下几点说明:
- 最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。
- 然后,检测布尔表达式的值。如果为 true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。
- 执行一次循环后,更新循环控制变量。
- 再次检测布尔表达式。循环执行上面的过程。
Java 增强 for 循环
// 语法
for(声明语句 : 表达式) {//代码句子
}
声明语句: 声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。
表达式: 表达式是要访问的数组名,或者是返回值为数组的方法。
死循环和循环语句对比
嵌套循环
嵌套循环性能优化案例
控制循环结构
break 语句
break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。
break 跳出最里层的循环,并且继续执行该循环下面的语句。
continue 语句
continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。
在 for 循环中,continue 语句使程序立即跳转到更新语句。
在 while 或者 do…while 循环中,程序立即跳转到布尔表达式的判断语句。
return 语句
return 表示结束循环所在的方法,方法都结束了,相应的循环结构也结束了。
控制外层循环
package com.qiqitrue.spring.framework;/*** 控制外层循环* @author laiqi**/
public class JavaTest {public static void main(String[] args) {outter:for (int i = 1; i < 10; i++) {for (int j = 1; j <= i; j++) {System.out.print(j + "x" + i + "=" + (i * j) + "\t");if(i == 5) {break outter; // 结束外层循环}}System.out.println();}}
}
方法
Java方法是语句的集合,它们在一起执行一个功能。
- 方法是解决一类问题的步骤的有序组合
- 方法包含于类或对象中
- 方法在程序中被创建,在其他地方被引用
方法的优点:
- 使程序变得更简短而清晰。
- 有利于程序维护。
- 可以提高程序开发的效率。
- 提高了代码的重用性。
方法的命名规则:
1.方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符。例如:addPerson
。
2.下划线可能出现在 JUnit 测试方法名称中用以分隔名称的逻辑组件。一个典型的模式是:test<MethodUnderTest>_<state>
,例如 testPop_emptyStack。
方法的定义
修饰符 返回值类型 方法名(参数类型 参数名){
…
方法体
…
return 返回值;
}
方法包含一个方法头和一个方法体。下面是一个方法的所有部分:
修饰符: 修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
返回值类型 : 方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。
方法名: 是方法的实际名称。方法名和参数表共同构成方法签名。
参数类型: 参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
方法体: 方法体包含具体的语句,定义该方法的功能。
方法的重载
就是说一个类的两个方法拥有相同的名字,但是有不同的参数列表。
Java编译器根据方法签名判断哪个方法应该被调用。
方法重载可以让程序更清晰易读。执行密切相关任务的方法应该使用相同的名字。
重载的方法必须拥有不同的参数列表。你不能仅仅依据修饰符或者返回类型的不同来重载方法。
数组
- 数组是多个相同类型数据的组合,实现对这些数据的统一管理。
- 数组属引用类型,数组型数据是对象(Object),数组中的每个元素相当于该对象的成员变量
- 数组中的元素可以是任何数据类型,包括基本类型和引用类型
一维数组
一维数组的声明方式: type var[] 或 type[] var;首选的方法是type[] var;
例如:
int a[];
int[] a1;
double b[];
Mydate []c; //对象数组
public class TestArray {public static void main(String[] args) {double[] myList = {1.9, 2.9, 3.4, 3.5};// 打印所有数组元素for (int i = 0; i < myList.length; i++) {System.out.println(myList[i] + " ");}// 计算所有元素的总和double total = 0;for (int i = 0; i < myList.length; i++) {total += myList[i];}System.out.println("Total is " + total);// 查找最大元素double max = myList[0];for (int i = 1; i < myList.length; i++) {if (myList[i] > max) max = myList[i];}System.out.println("Max is " + max);}
}
- Java中使用关键字
new
创建数组对象; - 定义并用运算符 new 为之分配空间后,才可以引用数组中的每个元素;
- 数组元素的引用方式:数组名[数组元素下标]
- 数组元素下标可以是整型常量或整型表达式。如a[3] , b[i] , c[6*i];
- 数组元素下标从0开始;长度为n的数组合法下标取值范围: 0 - n-1; 如int a[]=new int[3]; 可引用的数组元素为a[0]、a[1]、a[2]
- 每个数组都有一个属性 length 指明它的长度,例如:a.length 指明数组 a 的长度(元素个数)
注意: Java语言中声明数组时不能指定其长度(数组中元素的数), 例如: int a[5]; //非法
多维数组
多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组,例如:
String str[][] = new String[3][4];
Arrays 工具类
java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。
具有以下功能:
- 给数组赋值:通过
fill
方法。 - 对数组排序:通过
sort
方法,按升序。 - 比较数组:通过
equals
方法比较数组中元素值是否相等。 - 查找数组元素:通过
binarySearch
方法能对排序好的数组进行二分查找法操作。
这篇关于Java基础回顾系列-第一天-基本语法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!