Java基础语法
Posted Terence全栈开发
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础语法相关的知识,希望对你有一定的参考价值。
文章目录
- 1. Java概述
- 2. 第一个演示程序
- 3. java基础语法
- 4. 运算符
- 5. 数据输入
- 6. 流程控制语句
- 7. switch语句
- 8. for循环
- 9. while循环
- 10. 循环细节
- 11. Random
- 12. IDEA开发工具
- 13. 数组
- 14. 方法概述
- 15. Debug模式
- 16. 基础练习
1. Java概述
1.1 Java语言发展史
语言:人与人交流沟通的表达方式
计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言
Java语言是美国Sun公司(Stanford University Network)在1995年推出的计算机语言
Java之父:詹姆斯·高斯林(James Gosling)
2009年,Sun公司被甲骨文公司收购,所以我们现在访问oracle官网即可:https://www.oracle.com
当前,我们课程使用的JDK版本:11.0
1.2 Java语言跨平台原理
Java程序并非是直接运行的,Java编译器将Java源程序编译成与平台无关的字节码文件(class文件),然后由Java虚拟机(JVM)对字节码文件解释执行。所以在不同的操作系统下,只需安装不同的Java虚拟机即可实现java程序的跨平台。
1.3 JRE和JDK
JVM(Java Virtual Machine),Java虚拟机
JRE(Java Runtime Environment),Java运行环境,包含了JVM和Java的核心类库(Java API) JDK(Java Development Kit)称为Java开发工具,包含了JRE和开发工具
总结:我们只需安装JDK即可,它包含了java的运行环境和虚拟机。
1.4 JDK的下载和安装
1.4.1 下载
通过官方网站获取JDK
http://www.oracle.com
注意:针对不同的操作系统,需要下载对应版本的JDK。
1.4.2 安装
傻瓜式安装,下一步即可。但默认的安装路径是在C:\\Program Files下,为方便统一管理建议修改安装路径,将与开发相关的软件都安装到一个目录下,例如:E:\\develop。
注意:安装路径不要包含中文或者空格等特殊字符(使用纯英文目录)。
1.4.3 JDK的安装目录介绍
目录名称 | 说明 |
---|---|
bin | 该路径下存放了JDK的各种工具命令。javac和java就放在这个目录。 |
conf | 该路径下存放了JDK的相关配置文件。 |
include | 该路径下存放了一些平台特定的头文件。 |
jmods | 该路径下存放了JDK的各种模块。 |
legal | 该路径下存放了JDK各模块的授权文档。 |
lib | 该路径下存放了JDK工具的一些补充JAR包。 |
2. 第一个演示程序
2.1 常用DOS命令
在接触集成开发环境之前,我们需要使用命令行窗口对java程序进行编译和运行,所以需要知道一些常用DOS命令。
1、打开命令行窗口的方式:win + r打开运行窗口,输入cmd,回车。
2、常用命令及其作用
操作 | 说明 |
---|---|
盘符名称: | 盘符切换。E:回车,表示切换到E盘。 |
dir | 查看当前路径下的内容。 |
cd 目录 | 进入单级目录。cd itterence |
cd .. | 回退到上一级目录。 |
cd 目录1\\目录2… | 进入多级目录。cd itterence\\JavaSE |
cd \\ | 回退到盘符目录。 |
cls | 清屏。 |
exit | 退出命令提示符窗口。 |
2.2 Path环境变量的配置
2.2.1 为什么配置环境变量
开发Java程序,需要使用JDK提供的开发工具(比如javac.exe、java.exe等命令),而这些工具在JDK的安装目录的 bin目录下,如果不配置环境变量,那么这些命令只可以在该目录下执行。我们不可能把所有的java文件都放到JDK的bin目录下,所以配置环境变量的作用就是可以使bin目录下的java相关命令可以在任意目录下使用。
2.2.2 配置环境变量步骤
如果命令提示符窗口是配合环境变量前打开的,需要关闭该窗口,重新打开一个窗口测试
2.3 HelloWorld案例
HelloWorld案例是指在计算机屏幕上输出“HelloWorld”这行文字。各种计算机语言都习惯使用该案例作为第一个演示案例。
2.3.1 Java程序开发运行流程
开发Java程序,需要三个步骤:编写程序,编译程序,运行程序。
2.3.2 HelloWorld案例的编写
1、新建文本文档文件,修改名称为HelloWorld.java。
2、用记事本打开HelloWorld.java文件,输写程序内容。
public class HelloWorld
public static void main(String[] args)
System.out.println("HelloWorld");
2.3.3 HelloWorld案例的编译和运行
存文件,打开命令行窗口,将目录切换至java文件所在目录,编译java文件生成class文件,运行class文件。
编译:javac 文件名.java
范例:javac HelloWorld.java
执行:java 类名
范例:java HelloWorld
2.4 HelloWorld案例常见问题(理解)
2.4.1 BUG
在电脑系统或程序中,隐藏着的一些未被发现的缺陷或问题统称为bug(漏洞)。
2.4.2 BUG的解决
1、具备识别BUG的能力:多看
2、具备分析BUG的能力:多思考,多查资料
3、具备解决BUG的能力:多尝试,多总结
2.4.3 HelloWorld案例常见问题
1、非法字符问题。Java中的符号都是英文格式的。
2、大小写问题。Java语言对大小写敏感(区分大小写)。
3、在系统中显示文件的扩展名,避免出现HelloWorld.java.txt文件。
4、编译命令后的java文件名需要带文件后缀.java
5、运行命令后的class文件名(类名)不带文件后缀.class …
2.5 Notepad++软件的安装和使用
2.5.1 什么要使用Notepad++软件
Notepad++功能比windows中的自带记事本功能强大,除了可以用来制作一般的纯文字说明文件,也十分适合编写计算机程序代码。Notepad++有行号,能够快速定位问题位置,还有语法高亮度显示、代码折叠等功能。而且它是免费的。
2.5.2 Notepad++软件安装
安装:傻瓜式安装,一直下一步即可。建议也安装到统一的开发软件目录下,比如E:\\develop。
2.5.3Notepad++软件配置
安装完毕之后,为了使用方便,做一个简单的配置:修改默认语言和编码。
3. java基础语法
3.1 注释
注释是对代码的解释和说明文字,可以提高程序的可读性,因此在程序中添加必要的注释文字十分重要。Java中的 注释分为三种:
单行注释。单行注释的格式是使用//,从//开始至本行结尾的文字将作为注释文字。
// 这是单行注释文字
多行注释。多行注释的格式是使用/* 和 */将一段较长的注释括起来。
/*
这是多行注释文字 这是多行注释文字 这是多行注释文字
*/
注意:多行注释不能嵌套使用。
文档注释。文档注释以 /** 开始,以 */ 结束。(以后讲)
3.2 关键字
关键字是指被java语言赋予了特殊含义的单词。
关键字的特点:关键字的字母全部小写。
常用的代码编辑器对关键字都有高亮显示,比如现在我们能看到的public、class、static等。
3.3 常量
常量:在程序运行过程中,其值不可以发生改变的量。
Java中的常量分类:
字符串常量 用双引号括起来的多个字符(可以包含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(true); // 输出boolean值true
System.out.println("欢迎来到黑马程序员"); // 输出字符串
3.4 数据类型
3.4.1 计算机存储单元
我们知道计算机是可以用来存储数据的,但是无论是内存还是硬盘,计算机存储设备的最小信息单元叫“位 (bit)”,我们又称之为“比特位”,通常用小写的字母”b”表示。而计算机中最基本的存储单元叫“字节(byte)”,
通常用大写字母”B”表示,字节是由连续的8个位组成。
除了字节外还有一些常用的存储单位,其换算单位如下:
1B(字节) = 8bit
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
3.4.2 Java中的数据类型
Java是一个强类型语言,Java中的数据必须明确数据类型。在Java中的数据类型包括基本数据类型和引用数据类型两种。
Java中的基本数据类型:
数据类型 | 关键字 | 内存占用 | 取值范围 |
---|---|---|---|
整数类型 | byte | 1 | -128~127 |
short | 2 | -32768~32767 | |
int(默认) | 4 | -2的31次方到2的31次方-1 | |
long | 8 | -2的63次方到2的63次方-1 | |
浮点类型 | float | 4 | 负数:-3.402823E+38到-1.401298E-45 正数: 1.401298E-45到 3.402823E+38 |
double(默认) | 8 | 负数:-1.797693E+308到-4.9000000E-324 正数:4.9000000E-324 到1.797693E+308 | |
字符类型 | char | 2 | 0-65535 |
布尔 类型 | boolean | 1 | true,false |
说明: e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方。在java中整数默认是int类型,浮点数默认是double类型。 |
3.5 变量
3.5.1 变量的定义
变量:在程序运行过程中,其值可以发生改变的量。
从本质上讲,变量是内存中的一小块区域,其值可以在一定范围内变化。
变量的定义格式:
数据类型 变量名 = 初始化值; // 声明变量并赋值
int age = 18;
System.out.println(age);
或者
// 先声明,后赋值(使用前赋值即可) 数据类型 变量名;
变量名 = 初始化值;
double money;
money = 55.5;
System.out.println(money);
还可以在同一行定义多个同一种数据类型的变量,中间使用逗号隔开。但不建议使用这种方式,降低程序的可读性。
int a = 10, b = 20; // 定义int类型的变量a和b,中间使用逗号隔开
System.out.println(a);
System.out.println(b);
int c,d; // 声明int类型的变量c和d,中间使用逗号隔开
c = 30;
d = 40;
System.out.println(c);
System.out.println(d);
变量的使用:通过变量名访问即可。
3.5.2 使用变量时的注意事项
- 在同一对花括号中,变量名不能重复。
- 变量在使用之前,必须初始化(赋值)。
- 定义long类型的变量时,需要在整数的后面加L(大小写均可,建议大写)。因为整数默认是int类型,整数太大可能超出int范围。
- 定义float类型的变量时,需要在小数的后面加F(大小写均可,建议大写)。因为浮点数的默认类型是double, double的取值范围是大于float的,类型不兼容。
3.6 标识符
标识符是用户编程时使用的名字,用于给类、方法、变量、常量等命名。
Java中标识符的组成规则:
由字母、数字、下划线“_”、美元符号“$”组成,第一个字符不能是数字。
不能使用java中的关键字作为标识符。
标识符对大小写敏感(区分大小写)。
Java中标识符的命名约定:
小驼峰式命名:变量名、方法名
首字母小写,从第二个单词开始每个单词的首字母大写。
大驼峰式命名:类名
每个单词的首字母都大写。
另外,标识符的命名最好可以做到见名知意
例如:username、studentNumber等。
3.7 类型转换
在Java中,一些数据类型之间是可以相互转换的。分为两种情况:自动类型转换和强制类型转换。 自动类型转换:
把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量。这种转换方式是自动的,直接书写即可。例如:
double num = 10; // 将int类型的10直接赋值给double类型
System.out.println(num); // 输出10.0
强制类型转换:
把一个表示数据范围大的数值或者变量赋值给另一个表示数据范围小的变量。
强制类型转换格式:目标数据类型 变量名 = (目标数据类型)值或者变量;
例如:
double num1 = 5.5;
int num2 = (int) num1; // 将double类型的num1强制转换为int类型
System.out.println(num2); // 输出5(小数位直接舍弃)
说明:
- char类型的数据转换为int类型是按照码表中对应的int值进行计算的。比如在ASCII码表中,'a’对应97。
int a = 'a';
System.out.println(a); // 将输出97
- 整数默认是int类型,byte、short和char类型数据参与运算均会自动转换为int类型。
byte b1 = 10;
byte b2 = 20;
byte b3 = b1 + b2;
// 第三行代码会报错,b1和b2会自动转换为int类型,计算结果为int,int赋值给byte需要强制类型转换。
// 修改为:
int num = b1 + b2;
// 或者:
byte b3 = (byte) (b1 + b2);
- boolean类型不能与其他基本数据类型相互转换。
4. 运算符
4.1 算术运算符
4.1.1 运算符和表达式
运算符:对常量或者变量进行操作的符号
表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。
不同运算符连接的表达式体现的是不同类型的表达式。
举例说明:
int a = 10;
int b = 20;
int c = a + b;
+:是运算符,并且是算术运算符。
a + b:是表达式,由于+是算术运算符,所以这个表达式叫算术表达式。
4.1.2 算术运算符
符号 | 作用 | 说明 |
---|---|---|
+ | 加 | 参看小学一年级 |
- | 减 | 参看小学一年级 |
* | 乘 | 参看小学二年级,与“×”相同 |
/ | 除 | 参看小学二年级,与“÷”相同 |
% | 取余 | 获取的是两个数据做除法的余数 |
注意: /和%的区别:两个数据做除法,/取结果的商,%取结果的余数。
整数操作只能得到整数,要想得到小数,必须有浮点数参与运算。
int a = 10;
int b = 3;
System.out.println(a / b); // 输出结果3
System.out.println(a % b); // 输出结果1
4.1.3 字符的“+”操作
char类型参与算术运算,使用的是计算机底层对应的十进制数值。需要我们记住三个字符对应的数值:
‘a’ – 97 a-z是连续的,所以’b’对应的数值是98,'c’是99,依次递加
‘A’ – 65 A-Z是连续的,所以’B’对应的数值是66,'C’是67,依次递加
‘0’ – 48 0-9是连续的,所以’1’对应的数值是49,'2’是50,依次递加
// 可以通过使用字符与整数做算术运算,得出字符对应的数值是多少
char ch1 = 'a';
System.out.println(ch1 + 1); // 输出98,97 + 1 = 98
char ch2 = 'A';
System.out.println(ch2 + 1); // 输出66,65 + 1 = 66
char ch3 = '0';
System.out.println(ch3 + 1); // 输出49,48 + 1 = 49
算术表达式中包含不同的基本数据类型的值的时候,整个算术表达式的类型会自动进行提升。
提升规则:
byte类型,short类型和char类型将被提升到int类型,不管是否有其他类型参与运算。
整个表达式的类型自动提升到与表达式中最高等级的操作数相同的类型
等级顺序:byte,short,char --> int --> long --> float --> double
例如:
byte b1 = 10;
byte b2 = 20;
// byte b3 = b1 + b2; // 该行报错,因为byte类型参与算术运算会自动提示为int,int赋值给byte可能损失精度
int i3 = b1 + b2; // 应该使用int接收
byte b3 = (byte) (b1 + b2); // 或者将结果强制转换为byte类型
// -------------------------------
int num1 = 10;
double num2 = 20.0;
double num3 = num1 + num2; // 使用double接收,因为num1会自动提升为double类型
tips:正是由于上述原因,所以在程序开发中我们很少使用byte或者short类型定义整数。也很少会使用char类型定义字符,而使用字符串类型,更不会使用char类型做算术运算。
4.1.4 字符串的“+”操作
当“+”操作中出现字符串时,这个”+”是字符串连接符,而不是算术运算。
System.out.println("itheima"+ 666); // 输出:itheima666
在”+”操作中,如果出现了字符串,就是连接运算符,否则就是算术运算。当连续进行“+”操作时,从左到右逐个执行。
System.out.println(1 + 99 + "年黑马"); // 输出:100年黑马
System.out.println(1 + 2 + "itheima" + 3 + 4); // 输出:3itheima34
// 可以使用小括号改变运算的优先级
System.out.println(1 + 2 + "itheima" + (3 + 4)); // 输出:3itheima7
4.2 赋值运算符(应用)
赋值运算符的作用是将一个表达式的值赋给左边,左边必须是可修改的,不能是常量。
符号 | 作用 | 说明 |
---|---|---|
= | 赋值 | a=10,将10赋值给变量a |
+= | 加后赋值 | a+=b,将a+b的值给a |
-= | 减后赋值 | a-=b,将a-b的值给a |
*= | 乘后赋值 | a*=b,将a×b的值给a |
/= | 除后赋值 | a/=b,将a÷b的商给a |
%= | 取余后赋值 | a%=b,将a÷b的余数给a |
注意: | ||
扩展的赋值运算符隐含了强制类型转换。 |
short s = 10;
s = s + 10; // 此行代码报出,因为运算中s提升为int类型,运算结果int赋值给short可能损失精度
s += 10; // 此行代码没有问题,隐含了强制类型转换,相当于 s = (short) (s + 10);
4.3 自增自减运算符
符号 | 作用 | 说明 |
---|---|---|
++ | 自增 | 变量的值加1 |
– | 自减 | 变量的值减1 |
注意事项:
++和-- 既可以放在变量的后边,也可以放在变量的前边。
单独使用的时候, ++和-- 无论是放在变量的前边还是后边,结果是一样的。
参与操作的时候,如果放在变量的后边,先拿变量参与操作,后拿变量做++或者–。
参与操作的时候,如果放在变量的前边,先拿变量做++或者–,后拿变量参与操作。
最常见的用法:单独使用。
int i = 10;
i++; // 单独使用 System.out.println("i:" + i); // i:11
int j = 10;
++j; // 单独使用 System.out.println("j:" + j); // j:11
int x = 10;
int y = x++; // 赋值运算,++在后边,所以是使用x原来的值赋值给y,x本身自增1
System.out.println("x:" + x + ", y:" + y); // x:11,y:10
int m = 10;
int n = ++m; // 赋值运算,++在前边,所以是使用m自增后的值赋值给n,m本身自增1
System.out.println("m:" + m + ", m:" + m); // m:11,m:11
练习:
int x = 10;
int y = x++ + x++ + x++;
System.out.println(y); // y的值是多少?
/* 解析,三个表达式都是++在后,所以每次使用的都是自增前的值,
但程序自左至右执行,所以第一次自增时,使用的是 10进行计算,但第二次自增时,x的值已经自增到11了,
所以第二次使用的是11,然后再次自增。。。 所以整个式子应该是:int y = 10 + 11 + 12;
输出结果为33。
*/
注意:通过此练习深刻理解自增和自减的规律,但实际开发中强烈建议不要写这样的代码!小心挨打!
4.4 关系运算符
关系运算符有6种关系,分别为小于、小于等于、大于、等于、大于等于、不等于。
符号 | 说明 |
---|---|
== | a==b,判断a和b的值是否相等,成立为true,不成立为false |
!= | a!=b,判断a和b的值是否不相等,成立为true,不成立为false |
> | a>b,判断a是否大于b,成立为true,不成立为false |
>= | a>=b,判断a是否大于等于b,成立为true,不成立为false |
< | a<b,判断a是否小于b,成立为true,不成立为false |
<= | a<=b,判断a是否小于等于b,成立为true,不成立为false |
注意事项: | |
关系运算符的结果都是boolean类型,要么是true,要么是false。 | |
千万不要把"==“误写成”=“,”=="是判断是否相等的关系,=是赋值。 |
int a = 10;
int b = 20;
System.out.println(a == b); // false
System.out.println(a != b); // true
System.out.println(a > b); // false
System.out.println(a >= b); // false
System.out.println(a < b); // true
System.out.println(a <= b); // true
// 关系运算的结果肯定是boolean类型,所以也可以将运算结果赋值给boolean类型的变量 boolean flag = a > b;
System.out.println(flag); // 输出false
4.5 逻辑运算符
逻辑运算符把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序中的表达式是否成立,判断的结果是 true 或 false。
符号 | 作用 | 说明 |
---|---|---|
& | 逻辑与 | a&b,a和b都是true,结果为true,否则为false |
| | 逻辑或 | a|b,a和b都是false,结果为false,否则为true |
^ | 逻辑异或 | a^b,a和b结果不同为true,相同为false |
! | 逻辑非 | !a,结果和a的结果正好相反 |
//定义变量
int i = 10;
int j = 20;
int k = 30;
//& “与”,并且的关系,只要表达式中有一个值为false,结果即为false
System.out.println((i > j) & (i> k)); //false & false,输出false
System.out.println((i < j) & (i> k)); //true & false,输出false false
System.out.println((i > j) & (i< k)); //false & true,输出
System.out.println((i < j) & (i< k)); //true & true,输出true
System.out.println("--------");
//| “或”,或者的关系,只要表达式中有一个值为true,结果即为true
System.out.println((i > j) | (i> k)); //false | false,输出false
System.out.println((i < j) | (i> k)); //true | false,输出true
System.out.println((i > j) | (i< k)); //false | true,输出true
System.out.println((i < j) | (i< k)); //true | true,输出true
System.out.println("--------");
//^ “异或”,相同为false,不同为true
System.out.println((i > j) ^ (java语法基础都有哪些?
1,关键字:其实就是某种语言赋予了特殊含义的单词。
保留字:其实就是还没有赋予特殊含义,但是准备日后要使用过的单词。
2,标示符:其实就是在程序中自定义的名词。比如类名,变量名,函数名。包含 0-9、a-z、$、_ ;
注意:
1),数字不可以开头。
2),不可以使用关键字。
3,常量:是在程序中的不会变化的数据。
4,变量:其实就是内存中的一个存储空间,用于存储常量数据。
作用:方便于运算。因为有些数据不确定。所以确定该数据的名词和存储空间。
特点:变量空间可以重复使用。
什么时候定义变量?只要是数据不确定的时候,就定义变量。
变量空间的开辟需要什么要素呢?
1,这个空间要存储什么数据?数据类型。
2,这个空间叫什么名字啊?变量名称。
3,这个空间的第一次的数据是什么? 变量的初始化值。
变量的作用域和生存期:
变量的作用域:
作用域从变量定义的位置开始,到该变量所在的那对大括号结束;
生命周期:
变量从定义的位置开始就在内存中活了;
变量到达它所在的作用域的时候就在内存中消失了;
数据类型:
1):基本数据类型:byte、short、int、long、float、double、char、boolean
2):引用数据类型: 数组、类、接口。
级别从低到高为:byte,char,short(这三个平级)-->int-->float-->long-->double
自动类型转换:从低级别到高级别,系统自动转的;
强制类型转换:什么情况下使用?把一个高级别的数赋给一个别该数的级别低的变量;
运算符号:
1)、算术运算符。
+ - * / % %:任何整数模2不是0就是1,所以只要改变被模数就可以实现开关运算。
+:连接符。
++,--
2)、赋值运算符。
= += -= *= /= %=
3)、比较运算符。
特点:该运算符的特点是:运算完的结果,要么是true,要么是false。
4)、逻辑运算符。
& | ^ ! && ||
逻辑运算符除了! 外都是用于连接两个boolean类型表达式。
&: 只有两边都为true结果是true。否则就是false。
|:只要两边都为false结果是false,否则就是true
^:异或:和或有点不一样。
两边结果一样,就为false。
两边结果不一样,就为true.
& 和 &&区别: & :无论左边结果是什么,右边都参与运算。
&&:短路与,如果左边为false,那么右边不参数与运算。
| 和|| 区别:|:两边都运算。
||:短路或,如果左边为true,那么右边不参与运算。
5)、位运算符:用于操作二进制位的运算符。
& | ^
<< >> >>>(无符号右移)
练习:对两个变量的数据进行互换。不需要第三方变量。
int a = 3,b = 5;-->b = 3,a = 5;
a = a + b; a =8;
b = a - b; b =3;c
a = a - b; a =5;
a = a ^ b;//
b = a ^ b;//b= a ^ b ^ b = a
a = a ^ b;//a= a ^ b ^ a = b;
练习:高效的算出 2*8 ------------------> 位移运算的考验,java基础面试中它的曝光率不低哦
5,语句。
If switch do while while for
这些语句什么时候用?
1)、当判断固定个数的值的时候,可以使用if,也可以使用switch。
但是建议使用switch,效率相对较高。
switch(变量)
case 值:要执行的语句;break;
…
default:要执行的语句;
工作原理:用小括号中的变量的值依次和case后面的值进行对比,和哪个case后面的值相同了
就执行哪个case后面的语句,如果没有相同的则执行default后面的语句;
细节:1):break是可以省略的,如果省略了就一直执行到遇到break为止;
2):switch 后面的小括号中的变量应该是byte,char,short,int四种类型中的一种;
3):default可以写在switch结构中的任意位置;如果将default语句放在了第一行,则不管expression与case中的value是否匹配,程序会从default开始执行直到第一个break出现。
2)、当判断数据范围,获取判断运算结果boolean类型时,需要使用if。
3)、当某些语句需要执行很多次时,就用循环结构。
while和for可以进行互换。
区别在于:如果需要定义变量控制循环次数。建议使用for。因为for循环完毕,变量在内存中释放。
break:作用于switch ,和循环语句,用于跳出,或者称为结束。
break语句单独存在时,下面不要定义其他语句,因为执行不到,编译会失败。当循环嵌套时,break只跳出当前所在循环。要跳出嵌套中的外部循环,只要给循环起名字即可,这个名字称之为标号。
代码片段:
z: //for循环标号
for(int x=0;x<3;x++)
for(int y=0;y<2;y++)
//不带标号的就是结束整个循环体的作用,在那个循环内部就结束哪个循环
if(x==1)break;
//带标号跳过break后面的语句,回到标号位置的循环,继续该循环下次的条件判断,
//已决定是否执行该循环体
if(x==2&&y==1)break z;
continue:只作用于循环结构,继续循环用的。
作用:结束本次循环,继续下次循环。该语句单独存在时,下面不可以定义语句,执行不到。
6,函 数:为了提高代码的复用性,可以将其定义成一个单独的功能,该功能的体现就是java中的函数。函数就是体现之一。
java中的函数的定义格式:
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数1,…)
执行语句;
return 返回值;
当函数没有具体的返回值时,返回的返回值类型用void关键字表示。
如果函数的返回值类型是void时,return语句可以省略不写的,系统会帮你自动加上。
return的作用:结束函数。结束功能。
如何定义一个函数?
函数其实就是一个功能,定义函数就是实现功能,通过两个明确来完成:
1)、明确该功能的运算完的结果,其实是在明确这个函数的返回值类型。
2)、在实现该功能的过程中是否有未知内容参与了运算,其实就是在明确这个函数的参数列表(参数类型&参数个数)。
函数的作用:
1)、用于定义功能。
2)、用于封装代码提高代码的复用性。
注意:函数中只能调用函数,不能定义函数。
主函数:
1)、保证该类的独立运行。
2)、因为它是程序的入口。
3)、因为它在被jvm调用。
函数定义名称是为什么呢?
答:1)、为了对该功能进行标示,方便于调用。
2)、为了通过名称就可以明确函数的功能,为了增加代码的阅读性。
重载的定义是:在一个类中,如果出现了两个或者两个以上的同名函数,只要它们的参数的个数,或者参数的类型不同,即可称之为该函数重载了。
如何区分重载:当函数同名时,只看参数列表。和返回值类型没关系。
7,数 组:用于存储同一类型数据的一个容器。好处:可以对该容器中的数据进行编号,从0开始。数组用于封装数据,就是一个具体的实体。
如何在java中表现一个数组呢?两种表现形式。
1)、元素类型[] 变量名 = new 元素类型[元素的个数];
2)、元素类型[] 变量名 = 元素1,元素2...;
元素类型[] 变量名 = new 元素类型[]元素1,元素2...;
---------------------------------------------------------
//二分查找法。必须有前提:数组中的元素要有序。
public static inthalfSeach_2(int[] arr,int key)
int min,max,mid;//定义最小,最大,中间数
min = 0;//最小为0
max =arr.length-1;// 最大为数组的长度-1
mid =(max+min)>>1; //(max+min)/2;//中间数为最大加最小除以2
while(arr[mid]!=key)//如果数组中间值不等于key
if(key>arr[mid])//如果key>中间值
min = mid+ 1;
elseif(key
max = mid- 1;
if(max
return -1;
mid =(max+min)>>1;
return mid;
知识拓展:
java内存。
1:寄存器。2:本地方法区。3:方法区。4:栈。5:堆。
栈:存储的都是局部变量 ( 函数中定义的变量,函数上的参数,语句中的变量 );
只要数据运算完成所在的区域结束,该数据就会被释放。
堆:用于存储数组和对象,也就是实体。啥是实体呢?就是用于封装多个数据的。
1:每一个实体都有内存首地址值。
2:堆内存中的变量追问还有吗?
追答目前就这么多
建议您还是看书吧
李刚的疯狂java讲义
马达采纳一下
还有问题私信我
参考技术A
表达式语句
int k, i=3, j=4;?
k=i+j;?
System.out.println(〃k=〃+k);
2. 复合语句
class Block ?
public static void main(String args〔〕) ?
int k, i=3, j=4;?
k=i+j;?
System.out.println(〃k=〃+k);?
?
float f;?
f=j+4.5F;?
i++;?
System.out.println(〃f=〃+f);?
?
System.out.println(〃i=〃+i);?
?
选择语句
利用选择语句结构可以根据条件控制程序流程,改变程序执行的顺序。
if语句
if语句的语法格式为:
if (条件表达式)?
s1语句;
这是最简单的单分支结构。条件表达式的值为true,就执行s1语句,否则就忽略s1语句。s1语句可以是复合语句。
if…else语句
if语句通常与else语句配套使用,形成二分支结构。它的语法格式为:
if (条件表达式)?
s1语句;?
else?
s2语句;
当条件表达式的值为true,就执行s1语句,忽略else和s2语句;条件表达式的值为false,程序忽略s1语句,执行else后面的s2语句。s1和s2都可以是复合语句。
if…else复合结构
对于复杂的情况,可以嵌套使用if…else语句。它的语法格式为:
if (条件表达式1)?
s1语句;?
else if (条件表达式2)?
s2语句;?
else?
s3语句;
在这里依次计算条件表达式,如果某个条件表达式的值为true,就执行它后面的语句,其余部分被忽略;所有表达式的值都为false,就执行最后一个else后的s3语句。s1、s2和s3都可以是复合语句。
switch开关语句
虽然嵌套的条件语句可实现多个分支处理,但嵌套太多时容易出错和混乱,这时可以使用开关语句switch处理。实际上开关语句switch也是一种if…else结构,不过它使你在编程时很容易写出判断条件,特别是有很多条件选项的时候。
开关语句switch的语法格式:
switch (表达式) ?
case 常量1:?
语句1;?
break;
case 常量2:?
语句2;?
break;?
......?
default:?
语句n;?
其中switch、case、default是关键字,default子句可以省略。开关语句先计算表达式,然后将表达式值与各个常量比较,如果表达式值与某个常量相等,就执行该常量后面的语句;如果都不相等,就执行default下面的语句。如果无default子句,就什么都不执行,直接跳出开关语句。
使用开关语句时,注意以下几点:
? case后面的常量必须是整数或字符型,而且不能有相同的值;
? 通常在每一个case中都应使用break语句提供一个出口,使流程跳出开关语句。否则,在第一个满足条件case后面的所有语句都会被执行,这种情况叫做落空。
循环语句
循环可使程序根据一定的条件重复执行某一部分程序代码,直到满足终止循环条件为止。
Java中提供的循环语句有: 确定次数循环(for)、条件循环(while)、先执行后判定循环(do)。
for循环语句
如果希望程序的一部分内容按固定的次数重复执行,通常可以使用for循环。for循环采用一个计数器控制循环次数,每循环一次计数器就计数,直到完成给定的循环次数为止。
for循环的语法格式为:
for (表达式1; 表达式2; 表达式3)?
循环体
其中表达式1可以给出计数器的初值,是一个赋值语句;表达式2指出循环结束条件,是一个逻辑表达式;表达式3指出计数器每次的增量,是一个赋值语句。
注意: 计数器可在for语句之前定义,也可在循环括号中定义。计数器增量为1时常写成增量运算的形式,以加快运算速度。根据需要,增量可以大于或小于1。增量计算也可以放在循环体中进行,即把表达式3移到循环体内的适当位置,原位置为空。
使用循环语句时常常会遇到死循环的情况,也就是无限制地循环下去。所以在使用for循环时,要注意初值、终值和增量的搭配。终值大于初值时,增量应为正值,终值小于初值时,增量应为负值。编程时必须密切关注计数器的改变,这是实现正常循环避免陷入死循环的关键。
while循环语句
while循环不像for循环那么复杂,while循环只需要一个条件判断语句,便可以进行循环操作。
while循环的语法格式为:
while (条件表达式) ?
循环体
其中while是关键字。每次循环之前都要计算条件表达式,其值为true时,就执行一次循环体中的语句,然后再计算条件表达式,决定是否再次执行循环体中的语句;如果条件表达式的值为false时,就跳出循环体,执行循环体下面的语句。
注意: while循环中的条件表达式是逻辑表达式,所以循环体中一定要有改变条件表达式值的语句,使条件表达式的值有机会变为false,否则会陷入死循环。
do…while循环语句
do…while循环与while循环相反,是先执行循环体中的语句,再计算while后面的条件表达式,若条件表达式值为false则跳出循环;否则继续下一轮循环。
有些情况下,不管条件表达式的值是为true还是false,都希望把指定的语句至少执行一次,那么就应使用do…while循环。
do…while循环的语法格式为:
do ?
循环体?
while (条件表达式);
其中do、while是关键字。程序首先执行do下面的循环体,然后计算while后面条件表达式的值,如果其值为true,则重复执行循环体;否则,就结束循环。
与while循环相同,do循环在循环体中也一定要有改变条件表达式值为false的语句,否则会陷入死循环。do…while循环控制并不是很常用,但有时却非常重要,使用时特别注意不要忘记了while语句结尾处的分号“;”。
循环语句嵌套
ex:做个例子 是累计求和的。
?
public class Sum1 ?
public static void main(String args〔〕) ?
int n=10, sum=0;?
while (n>0) ?
sum=0;?
for (int i=1; i<=n; i++)?
sum+=i;?
System.out.println(〃前〃+n+〃个数的总和为: 〃+sum);?
n--;?
?
?
循环语句小结
一个循环一般应包括4部分内容。
(1) 初始化部分: 用来设置循环的一些初始条件,计数器清零等。
(2) 循环体部分: 这是反复被执行的一段代码,可以是单语句,也可以是复合语句。
(3) 迭代部分: 这是在当前循环结束,下一次循环开始时执行的语句,常用来使计数器加1或减1。
(4) 终止部分: 通常是一个布尔表达式,每一次循环要对该表达式求值,以验证是否满足循环终止条件。
跳转语句
跳转语句可以无条件改变程序的执行顺序。Java支持3种跳转语句: break、continue和return。
break语句
break语句提供了一种方便的跳出循环的方法。使用break语句可以立即终止循环,跳出循环体,即使循环没有结束也如此。
break语句的使用示例,输出结果如图3.10所示。
class B ?
public static void main(String args〔〕) ?
boolean test=true;?
int i=0;?
while (test) ?
i=i+2;?
System.out.println(〃i=〃+i);?
if (i>=10)?
break;?
?
System.out.println(〃 i为〃+i+〃时循环结束〃);?
?
带标号的break语句
标号是标记程序位置的标识符。break语句只能跳转到循环语句下面的第一条语句上,而带标号的break语句可直接跳转到标号处。正常的break只退出一重循环,如果要退出多重循环,可以使用带标号的break语句。它的语法格式为:
标识符:?
…?
break 标识符;
做个例子说明
运行该工程,正常情况下可从键盘接受16个输入字符,但当输入b按回车时,break lab1语句就会结束二重循环。
class B1 ?
public static void main(String args〔〕) throws java.io.IOException ?
char ch;??
lab1: // 此处为标号标识符?
for (int i=0; i<4; i++)?
for (int j=0; j<4; j++) ?
ch=(char)System.in.read();?
System.in.skip(2);?
if (ch==′b′)?
break lab1;//跳到标号标识符处?
if (ch==′c′)?
System.out.println(〃继续〃);
?
System.out.println(〃结束两重循环〃);?
?
continue语句
continue语句只能用在循环结构中,它跳过循环体中尚未执行的语句,重新开始下一轮循环,从循环体第一个语句开始执行。
下面的可以输出1~9中除6以外所有偶数的平方值
class C2 ?
public static void main(String args〔〕) ?
for (int i=2;i<=9;i+=2) ?
if (i==6)?
continue; ?
System.out.println(i+〃 的平方 = 〃+i*i); ?
?
带标号的continue语句
Java也支持带标号的continue语句,它通常用在嵌套循环的内循环中,可以用标号标出想跳到哪一条语句继续重复执行程序。其语法格式为:
标识符:?
…?
continue 标识符;
带标号的continue语句的使用
class C3?
public static void main(String args〔〕) ?
lab1:?
for (int i=1; i<=3; i++)?
for (int j=1; j<=3; j++) ?
System.out.println(〃i:〃+i+〃 j:〃+j);?
if (i+j>3) ?
System.out.println(〃Continue〃);?
continue lab1;?
?
System.out.println(〃i=〃+i+〃 j=〃+j);?
?
?
求100~200间的所有素数。用嵌套的for循环做
public class Find ?
public static void main(String args〔〕) ?
System.out.println(〃 ** 100~200间的所有素数 **〃);?
int n=0;??
outer:?
for (int i=101; i<200; i+=2) ?
int k=15;?
for (int j=2; j<=k; j++)?
if (i%j==0)?
continue outer;?
System.out.print(〃 〃+i);?
n++;?
if (n<10)?
continue;
System.out.println();?
n=0;?
?
System.out.println();?
?
return语句
return语句用于方法的返回上,当程序执行到return语句时,终止当前方法的执行,返回到调用这个方法的语句。return语句通常位于一个方法体的最后一行,有带参数和不带参数两种形式,带参数形式的return语句退出该方法并返回一个值。
当方法用void声明时,说明不需要返回值(即返回类型为空),应使用不带参数return语句。不带参数的return语句也可以省略,当程序执行到这个方法的最后一条语句时,遇到方法的结束标志就自动返回到调用这个方法的程序中。
带参数的return语句格式为:
return 表达式;
当程序执行到这个语句时,首先计算“表达式”的值,然后将表达式的值返回到调用该方法的语句。返回值的数据类型必须与方法声明中的返回值类型一致,可以使用强制类型转换来使类型一致。
带参数的return语句的使用
class CircleArea ?
final static double PI=3.14159;?
public static void main(String args〔〕) ?
double r1=8.0, r2=5.0;?
System.out.println(〃半径为〃+r1+〃的圆面积=〃+area(r1));?
System.out.println(〃半径为〃+r2+〃的圆面积=〃+area(r2));?
?
static double area(double r) ?
return (PI*r*r);?
?
参考技术B
JavaEE基础中包含的知识点有:Java基础语法、面向对象、核心类库、集合、异常、IO、线程、JDK新特性。
JavaWeb开发中包含的知识点有:前端技术、数据库、JAVA数据库操作、软件服务器及服务器相关技术、动态网页JSP、AJAX、优就业-在线医疗系统。
Java高级框架中包含的知识点有:SpringMVC、MyBatis 、Spring、MySQL高级、Linux&Redis&Nginx、Maven 、中公MIS权限系统。
大型微服务分布式项目实战:SpringBoot、SpringCloud、Git 、Dubbo、Zookeeper、AngularJS、Spring Security、BCrypt加密、FastDFS、分布式事务处理、Redis Cluster、Solr、SolrCloud、Freemarker 、JMS 、短信发送平台、SSO解决方案、CORS、Twitter的Snowflake、SpringTask 、Maven Profile、MongoDB简介、MyCat、Docker、Jenkins、东易买大型电商实战、东易众筹。
参考技术C
建议你买本Java方面的书籍看,这个问题太广泛了
参考技术D
1,关键字:其实就是某种语言赋予了特殊含义的单词。
保留字:其实就是还没有赋予特殊含义,但是准备日后要使用过的单词。
2,标示符:其实就是在程序中自定义的名词。比如类名,变量名,函数名。包含 0-9、a-z、$、_ ;
注意:
1),数字不可以开头。
2),不可以使用关键字。
3,常量:是在程序中的不会变化的数据。
4,变量:其实就是内存中的一个存储空间,用于存储常量数据。
作用:方便于运算。因为有些数据不确定。所以确定该数据的名词和存储空间。
特点:变量空间可以重复使用。
什么时候定义变量?只要是数据不确定的时候,就定义变量追问还有吗?
追答变量空间的开辟需要什么要素呢?
1,这个空间要存储什么数据?数据类型。
2,这个空间叫什么名字啊?变量名称。
3,这个空间的第一次的数据是什么? 变量的初始化值。
变量的作用域和生存期:
变量的作用域:
作用域从变量定义的位置开始,到该变量所在的那对大括号结束;
生命周期:
变量从定义的位置开始就在内存中活了;
变量到达它所在的作用域的时候就在内存中消失了;更多参考资料
http://user.qzone.qq.com/124493628/blog/1460536984
本回答被提问者和网友采纳
以上是关于Java基础语法的主要内容,如果未能解决你的问题,请参考以下文章