Java第二章:JavaSE基础语法

本章目标:

● IDE的使用

注释

关键字

标识符  

● Java变量

● Java 数据类型

● 条件运算符

● 控制语句

循环

● Java中的方法

IDE的使用

IDE(Integrated Development Environment ) 集成开发环境 , 是用于提
供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器 和图
形用户界面等工具。
常用的 java 开发工具有 :
● IntelliJ IDEA
● Eclipse

注释

以某种特定符号作为标记 , 对程序功能的说明 , 程序在运行过程中不会执行注
.
● Java 语言有三种注释方式:
// 用于单行注释 , 快捷键 ctrl+/
/* */ 用于多行注释 , 快捷键 ctrl+shift+/ ctrl+shift+\ 取消注释
/** */ 文档注释,用于为类 , 方法 , 属性 功能进行说明 , 可在调用时提示 , 以及
使用 javadoc 命令生成说明文档

关键字

关键字的定义和特点
定义:被 Java 语言赋予了特殊含义,用做专门用途的单词
特点:关键字中所有字母都为小写
关键字比较多,不需要死记硬背,学到哪里记到哪里即可
下面是现阶段我们需要认识和了解的关键字:
用于定义数据类型的关键字
classinterfaceenumbyteshort
intlong

float

doublechar
booleanvoid
用于定义流程控制的关键字
ifelseswitchcasedefault
whiledoforbreakcontinue
return
用于定义访问权限修饰符的关键字
privateprotectedpublic
用于定义类,函数,变量修饰符的关键字
abstractfinalstaticsynchronized
用于定义类与类之间关系的关键字
extendsimplements
用于定义建立实例和引用实例,判断实例的关键字
new        thissuperinstanceof
用于处理异常的关键字
trycatchfinallythrowsthrow
用于包的关键字
packageimport
其他修饰符关键字
nativestrictfptransientvolatileassert
用于定义数据类型值的字面值
turefalsenull
说明:
关键字一共50个,其中const和goto是保留字。
Java保留字:现有Java版本尚未使用,但以后版本可能会作为关键字使用。

标识符

标识符: Java 对各种变量、方法和类等要素命名时使用的字符序列称为标识符.
技巧:凡是自己可以起名字的名称都可以叫标识符。
定义合法标识符规则(必须遵守的语法规则):
由26个英文字母大小写,0-9 ,_或 $ 组成
数字不可以开头
不可以使用关键字和保留字,但能包含关键字和保留字
Java中严格区分大小写
长度无限制。
标识符不能包含空格
标识符的命名规范(建议遵守的`软性要求`,否则工作时容易被鄙视):
注意:在起名字时,为了提高阅读性,要尽量有意义,“见名知意”
类名、接口名:多单词组成时,所有单词的首字母大写: XxxYyyZzz
例如: HelloWorld String
变量名、方法名:多单词组成时,第一个单词首字母小写,第二 个单词开始每个单词首字母大
写:xxxYyyZzz
String userName = "Kobe";
int age = "20";

Java变量

变量是程序中最基本的存储单元,程序执行中数值是可变的 .
变量其实是内存中的一小块区域,使用变量名来访问这块区域,因此,每一个 变量使
用前必须要先申请(声明),然后必须进行赋值(填充内容),才能使用 .
变量是通过使用变量名来访问这块区域的 .
其要素包括变量名,变量类型。
● Java 程序中每一个变量都属于特定的数据类型,在使用前必须对其声明,声明格式
为: type varName
例如: int i;
int i1, i2, i3;
int a = 0;//变量赋值

Java数据类型

程序中对于每一种数据都定义了明确的具体数据类型,在内存中
分配了不同大小的内存空间。
整数类型
● Java 各整数类型有固定的表数范围和字段长度,其不受具体操作系统的
影响,以保证 Java 程序的可移植性。
类型占用存储空间表数范围
byte1字节-128 ~ 127
short2字节-2^(15) ~ 2^(15)-1

int4字节
-2^(31) ~ 2^(31)-1
long8字节
-2^(63) ~ 2^(63)-1
Java 语言的整型常量默认为 int 型,声明 long 型常量可以后加‘ l ’或‘ L ’ 
计算机存储单位
字节( Byte ):是计算机用于计量存储容量的基本单位,一个字节等于 8 bit
位( bit ):是数据存储的最小单位。二进制数系统中,每个 0 1 就是一个位,
叫做 bit (比特),其中 8 bit 就称为一个字节 (Byte)
转换关系:
8 bit = 1 Byte
1024 Byte = 1 KB
1024 KB = 1 MB
1024 MB = 1 GB
1024 GB = 1 TB
浮点类型
与整数类型类似, Java 浮点类型有固定的表数范围和字段长度,不受平台 影
响。 Java 浮点类型有两种表示形式
十进制数形式,例如 : 3.14 314.0
科学记数法形式,如 3.14e2 3.14E2
定义 float 类型的变量,赋值时需要以 f F 作为后缀。
Java 的浮点型常量默认为 double 型。
float :单精度,可以精确到 8 位有效数字。很多情况下,精度很难满足需求。
double :双精度,精度是 float 的两倍。
浮点数的问题
在计算机中十进制整数可以很准确的转为二进制(采用除2取余方式).
但是十进制浮点数有时不能精确的转为二进制,只能是一个近似值.
java 中如果需要使用精确的小数计算 ,
后期会讲到 BigDecimal 类型 .
逻辑型 boolean( 布尔 )
● boolean 类型适于逻辑运算,一般用于程序流程控制 。
● java 语言中 boolean 类型数据只允许取值 true false
注意 : 不可以 0 或非 0 的整数替代 false true ,这点和 C 语言不同。
字符型 char char 型数据用来表示一个单个字符 .
char 2 字节 .
用单引号括起来
例如: char c1 = 'a';
char c2 =' ';
由于 java 底层使用 unicode 编码 , 所以可以涵盖世界上所有书面语的字符。
● char 运算
char 类型是可以运算的因为 char 在字符编码表中有对应的数值。
JAVA 中,对 char 类型字符运行时,直接当做对应编码表的整数来对待。
char c= a +1; 先将’ a ’提升为 int ,计算结果 98

ASCII

ASCII(ASCII American Standard Code for Information Interchange,
美国 信息互换标准代码) 上个世纪60年代,美国制定了一套字符编码,对英语
字符与二进制位之间的关系, 做了统一规定。这被称为ASCII码。
ASCII码: 在计算机内部,所有数据都使用二进制表示。每一个二进制位(bit)
有 0 和 1 两种状 态,因此 8 个二进制位就可以组合出 256 种状态,这被称为
一个字(byte)。
ASCII码一共规定了128个字符的编码,比如空格“SPACE”是32(二进制
00100000),大写的字母A是65(二进制01000001)。这128个符号(包括
32个不 能打印出来的控制符号),只占用了一个字节的后面7位,最前面的1位
统一规定为0。
缺点:不能表示所有字符。
Unicode 编码
● Unicode :一种编码,将世界上所有的符号都纳入其中。这个编号范围
0x000000 0x10FFFF ( 十六进制 ) ,有 110 多万,每个字符都有
一个唯一的 Unicode 编号,这个编号一般写成 16 进制,在前面加上
U+
例如:“马”的 Unicode U+9A6C, 可以换算为整数。
● Java 底层采用 unicode 编码来存储字符 .
java 数据类型 -String
● String 不是基本数据类型,属于引用数据类型
使用一对 "" 来表示一个字符串,内部可以包含 0 个、 1 个或多个字符。
声明方式 :
例如: String str = abcd ;
String name = “张三” ;
String java 类库中提供的一个类 , 用类来当做字符串变量类型 .
运算规则
1. 任意八种基本数据类型的数据与 String 类型只能进行连接 “+” 运算,且结果一定
也是 String 类型
2.String 类型不能转为其他的基本类型
基本数据类型转换
在Java程序中,不同的基本数据类型(只有7种,不包含boolean类型)变量的
值经常需要进行相互转换。
转换分为默认转换和强制转换
规则:将取值范围小(或容量小)的类型自动提升为取值范围大(或容量大)
的类型 。
容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造
成精 度降低或溢出;使用时要格外注意。
有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的
那一 种数据类型,然后再进行计算。
浮点数不是简单的直接表示大小,而是按照一定的标准分配的。
其中第 1 位,符号位,即 S
接下来的 8 位,指数域,即 E
剩下的 23 位,小数域,即 M
也就是说,浮点数在内存中的二进制值不是直接转换为十进制数值的,而是按照
上述公式计算而来,通过这个公式,虽然只用到了 4 个字节,但是浮点数却比长整型的
最大值要大。
V=(-1)^s * M * 2^E

运算符

分类运算符
算术运算符+,-,*,/,%,++,--
赋值运算符=,+=,/=,*=,-=,%=
比较(或关系)运算符>,<,<=,>=,==,!=
逻辑运算符&,|,&&,||,^,!
位运算符&,|,^,~,<<,>>,<<<
条件运算符(条件表达式)?结果1:f结果2

算数运算表:

运算符运算范例结果
+正号+33
-负号-5-5
+5+510
-10-37
*3*927
/9/33
%取模7%52

++

++

1.自增(前):先运算,后取值

2.自增(后):先取值,后运算

1.a=2,b=++a

2.a=2,b=a++

1.a=3,b=3

2.a=3,b=2

--

--

1.自减(前):先运算,后取值

2.自减(后):先取值,后运算

1.a=2,b=--a

2.a=2,b=a--

1.a=1,b=1

2.a=1,b=2

+字符串相加"i"+" love"+" u"i love u
比较运算符
运算符运算范例结果
==等于4 = 4true
!=不等于4 != 5true
        <小于4 < 5true
>大于4 > 5true
<=小于等于4 <= 5true
>=大于等于4 >= 5true
instanceof检查是否是类的对象"Kobe" instanceof Stringtrue

比较运算符的计算结果是boolean值,要么是真true,要么是假false

注意比较运算符不能误写为:=          

逻辑运算符

逻辑运算符 :
● &— 逻辑与 | — 逻辑或 ! 逻辑非
● && — 短路与 || — 短路或 ^ — 逻辑异或
aba & ba | b!aa^ba&&ba||b
truetruetruetruefalsefalsetruetrue
truefalsefalsetruefalsetruefalsetrue
falsetruefalsetruetruetruefalsetrue
falsefalsefalsefalsetruefalsefalsefalse
& ”和“ && ”的区别:
& 时,左边无论真假,右边表达式都进行运算;
& 时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算
| ”和“ || ”的区别同理, || 表示:当左边为真,右边不参与运算。
建议:开发中,推荐使用 && ||
int x = 1;
int y = 1;
if(x++ == 2 & ++y == 2){
x = 7;
}
System.out.println("x=" + x + ",y=" + y);
int x = 1;
int y = 1;
if(x++ == 2 && ++y == 2){
x = 7;
}
System.out.println("x=" + x + ",y=" + y);
赋值运算符
符号: =
当“ = ”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原
则进行处 理。
扩展赋值运算符: +=, -=, *=, /=, %=
运算符用法举例等效的表达式
+=
a += b
a = a+b
-=
a -= b        
a = a-b
*=
a *= b        
a = a*b
-=
a /= b        
a = a/b        
%=
a %= b
a = a%b        

条件运算符

语法 :
( 条件表达式 )? 表达式 1 :表达式 2 ;//如果为真则执行表达式1,为假则执行表达式2
如果运算后的结果赋给新的变量,要求表达式 1 和表达式 2 为同种或兼容的类型
位运算
日常开发中位运算使用相对较少,但是巧妙的使用位运算可以大量减少运行开
销, 优化算法
位运算符
<<
空位补0,被移除的高位丢弃,空缺位补0。
>>
被移位的二进制最高位是0,右移后,空缺位补0;
最高位是1,空缺位补1。
>>>被移位二进制最高位无论是0或者是1,空缺位都用0补。
&二进制位进行&运算,只有1&1时结果是1,否则是0;
|二进制位进行 | 运算,只有0 | 0时结果是0,否则是1;
^
相同二进制位进行 ^ 运算,结果是0;1^1=0 , 0^0=0
不相同二进制位 ^ 运算结果是1。1^0=1 , 0^1=1
~
正数取反,各二进制码按补码各位取反
负数取反,各二进制码按补码各位取反
控制台输入
java提供Scanner类来实现从控制台向程序输入信息功能.
具体步骤
1. 导入使用的类:import java.util.Scanner;
2. 创建Scanner类型的对象:Scanner scan = new Scanner(System.in);
3. 调用Scanner类的相关方法,来获取指定类型的变量
next()方法用以 取得用户输入的字符串;
nextInt()将取得的输入字符串转换为整数类型;
nextFloat()转换成浮点型;
nextBoolean()转 换成布尔型。
例:System.out.print("请输入姓名");
Scanner scan = new Scanner(System.in);
String name= scan.next ();
System.out.println("姓名:"+name);

控制语句

条件语句 - 根据不同条件,执行不同语句。
● if
● if .. else
● if .. else if
● if .. else if .. else if .. else
● switch
循环语句 重复执行某些动作
● for
● while
● do .. while;
if条件结构
if条件结构是根据条件判断之后再做处理
条件表达式必须是一个返回布尔结果的表达式。
语句可以是用{}包含的语句块
还有if(){}else{}结构
if-else语句的另一种形式为:
if (条件1){
语句1;
} else if (条件2){
语句2;
}……
}else if (条件N){
语句N;
}
switch 语句
switch语句:多分支选择语句,根据表达式的值,来执行多个操作中的一个。
switch (表达式){
case value1: 语句序列1;
[ break ];
…………
case valueN: 语句序列N;
[ break ];
[ default : 缺省语句;]
}
表达式可以是byte、short、int、char、枚举类型、String类型;
case语句后面只能使用常量表达式;
case后的值不能重复;
某个case分支如果没有提供break语句,则继续执行下一个case后的语句;
当表达式的值与任一case子句中的值都不匹配时,将执行default后面的语句;
如果没有default子句,则程序直接跳出switch语句。
switch 语句 case的穿透性
在switch语句中,如果case的后面不写break,将出现穿透现象,也就是一旦匹配成功,不会
在判断下一个case的值,直接向后运行,直到遇到break或者整个switch语句结束,执行终止。
if-else语句与switch-case语句比较
结论:凡是使用switch-case的结构都可以转换为if-else结构。反之,不成立。
开发经验:如果既可以使用switch-case,又可以使用if-else,建议使用switch-case。因为效
率稍高。
if-else语句优势
if语句的条件是一个布尔类型值,if条件表达式为true则进入分支,可以用于范围的判断,也可
以用于等值的判断,使用范围更广。
switch语句的条件是一个常量值(byte,short,int,char,枚举,String),只能判断某个变量或表
达式的结果是否等于某个常量值,使用场景较狭窄。
switch语句优势
当条件是判断某个变量或表达式是否等于某个固定的常量值时,使用if和switch都可以,习惯上
使用switch更多。因为`效率稍高`。当条件是区间范围的判断时,只能使用if语句

循环

循环语句功能
在某些条件满足的情况下,反复执行特定代码的功能
循环语句的四个组成部分
循环变量的初始化
循环条件部分
循环体部分
迭代部分
循环语句分类
while 循环
do/while 循环
for 循环
while & do while 语句
while 语句为如下形式:
初始化部分
while(逻辑表达式){
循环体
迭代部分
}
执行过程
先判断逻辑表达式的值。
若=true.则执行其后面的语句,然
后再次判断条件并反复执行,直
到条件不成立为止
while 语句为如下形式:
do { 语句; … ; } while(逻辑表达式);
执行过程
先执行语句,再判断逻辑表达式的值,若
为true,再执行语句,否则结束循环。
for 循环语句
for 语句为如下形式:
for(表达式1; 表达式2; 表达式3){ 语句; … ; }
执行过程
首先计算表达式1,接着执行表达式2,若表达式2的值 = true,则执行循环语句,
接着计算表达式3,再判断表达式2的值;依此重复下去,直到表达式2的值=false
三种循环结构对比
三种循环结构都具有四个要素:
循环变量的初始化条件
循环条件
循环体语句块
循环变量的修改的迭代表达式
从循环次数角度分析
do-while循环至少执行一次循环体语句。
for和while循环先判断循环条件语句是否成立,然后决定是否执行循环体。
如何选择
遍历有明显的循环次数(范围)的需求,选择for循环
遍历没有明显的循环次数(范围)的需求,选择while循环
如果循环体语句块至少执行一次,可以考虑使用do-while循环
本质上:三种循环之间完全可以互相转换,都能实现循环的功能
break & continue
break 语句用于终止某个语句块的执行。用在
循环语句体中,可以强行退出循环;例如:
int stop = 4;
for (int i = 1; i <= 10; i++) {
// i 等于 stop 时,退出循环
if (i == stop){
break;
}
System.out.println(" i= " + i);
}
i = 1 
i = 2
i = 3
continue 语句用在循环语句体中,用于终止某
次循环过程,跳过循环体中 continue 语句下
面未执行的循环,开始下一次循环过程;例
如:
int skip = 4;
for (int i = 1; i <= 5; i++) {
// i 等于 skip 时,跳过当次循环
if (i == skip){
continue;
}
System.out.println("i = " + i);
}
i = 1 
i = 2 
i = 3
i = 5 
循环嵌套
将一个循环放在另一个循环体内,就形成了嵌套循环。其中,
for ,while ,do…while均可以作为外层循环和内层循环。
实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层
循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的当
次循环,开始下一次的循环。
结束外层循环
如果需要从多层循环跳出,则需要使用标签,定义一个标签,如label,
然后在需要跳出的地方,用break label就行了.

Java中的方法

方法的引入
《街霸》游戏中,每次人物出拳、出脚或跳跃等动作都需要编写 50-80 行的代码,在每次出
拳、出脚或跳跃的地方都需要重复地编写这 50-80 行代码,这样程序会变得 ` 很臃肿 ` ,可读
性也非常差。
为了解决代码重复编写的问题,可以将出拳、出脚或跳跃的代码提取出来放在一个 {} 中,
并为这段代码起个名字,这样在每次的出拳、出脚或跳跃的地方通过这个名字来调用这个 {}
的代码就可以了。
上述过程中,所提取出来的代码可以被看作是程序中定义的一个方法,程序在需要出拳、出
脚或跳跃时调用该方法即可。
Java中的方法类似于其它语言的函数,方法是解决一类问题步骤的组合,表示一种功能和行为.
将功能封装为方法的目的是,可以`实现代码重用,减少冗余,简化代码`
Java里的方法`不能独立存在`,所有的方法必须定义在类里。
方法声明格式:
[访问权限修饰符 修饰符…] [返回值类型] 方法名(形式参数类型 参数名){
Java语句;… … …
[return 返回值;]
}
修饰符:这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
形式参数: 在方法被调用时用于接收外界输入的数据。
返回值类型:事先约定的返回值的数据类型,如无返回值,必须给出返回值类型void。
方法体:方法体必须有{}括起来,在{}中编写完成方法功能的代码
返回值:方法在执行完毕后返还给调用它的环境的数据。
实参:调用方法时实际传给方法的数据。
Java语言中使用下述形式调用方法:
类名/对象名.方法名(实参列表)
实参的数目、数据类型和次序必须和所调用方法声明的形参列表匹配,
return 语句终止方法的运行并指定要返回的数据。
return语句
return语句用于从当前执行的方法中退出, 返回到调用该方法的语句处继续执行。
有两种格式:
return 值; //将值返回,方法必须声明有返回值
return; //不返回任何值,表示终止方法执行,可以在声明为void的方法中使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值