目录
1 注释
注释是对代码的解释和说明文字,可以提高程序的可读性,因此在程序中添加必要的注释文字十分重要。
Java
中的
注释分为三种:
单行注释。单行注释的格式是使用
//
,从
//
开始至本行结尾的文字将作为注释文字。
// 这是单行注释文字
多行注释。多行注释的格式是使用
/*
和
*/
将一段较长的注释括起来。
/*这是多行注释文字这是多行注释文字这是多行注释文字*/注意:多行注释不能嵌套使用。
2 关键字
关键字是指被
java
语言赋予了特殊含义的单词。
关键字的特点:
关键字的字母全部小写。
常用的代码编辑器对关键字都有高亮显示,比如现在我们能看到的
public
、
class
、
static
等。
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 值 trueSystem . out . println ( " 欢迎来到黑马程序员 " ); // 输出字符串}}
4 变量的介绍
变量的定义格式:
数据类型 变量名
=
数据值;
数据类型:为空间中存储的数据加入类型限制。整数?小数?
变量名:自己要为空间起的名字,没有难度
数据值: 空间中要存储的数值,没有难度
5 数据类型
5.1 计算机存储单元
我们知道计算机是可以用来存储数据的,但是无论是内存还是硬盘,计算机存储设备的最小信息单元叫
“
位
(
bit
)
”
,我们又称之为
“
比特位
”
,通常用小写的字母
”b”
表示。而计算机中最基本的存储单元叫
“
字节(
byte
)
”
,
通常用大写字母
”B”
表示,字节是由连续的
8
个位组成。
除了字节外还有一些常用的存储单位,其换算单位如下:
1B
(字节)
= 8bit
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
5.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
|
6 变量
6.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 );
6.2 变量的修改
int a = 10 ;a = 30 ; // 修改变量的值System . out . println ( a );
变量前面不加数据类型时,表示修改已存在的变量的值。
7 变量的注意事项
1.
在同一对花括号中,变量名不能重复。
2.
变量在使用之前,必须初始化(赋值)。
3.
定义
long
类型的变量时,需要在整数的后面加
L
(大小写均可,建议大写)。因为整数默认是
int
类型,整数太
大可能超出
int
范围。
4.
定义
flfloat
类型的变量时,需要在小数的后面加
F
(大小写均可,建议大写)。因为浮点数的默认类型是
double
,
double
的取值范围是大于
flfloat
的,类型不兼容。
8 键盘录入
我们可以通过
Scanner
类来获取用户的输入。使用步骤如下:
1
、导包。
Scanner
类在
java.util包下,所以需要将该类导入。导包的语句需要定义在类的上面。
import java . util . Scanner ;
2
、创建
Scanner对象
Scanner sc = new Scanner ( System . in ); // 创建 Scanner 对象, sc 表示变量名,其他均不可变
3
、接收数据
int i = sc . nextInt (); // 表示将键盘录入的值作为 int 数返回。
示例:
import java . util . Scanner ;public class ScannerDemo {public static void main ( String [] args ) {// 创建对象Scanner sc = new Scanner ( System . in );// 接收数据int a = sc . nextInt ();// 输出数据System . out . println ( a );}}
9 标识符
标识符是用户编程时使用的名字,用于给类、方法、变量、常量等命名。
Java
中标识符的组成规则:
由字母、数字、下划线
“_”
、美元符号
“$”
组成,第一个字符不能是数字。
不能使用
java
中的关键字作为标识符。
标识符对大小写敏感(区分大小写)。
Java
中标识符的命名约定:
小驼峰式命名:变量名、方法名
首字母小写,从第二个单词开始每个单词的首字母大写。
大驼峰式命名:类名
每个单词的首字母都大写。
另外,标识符的命名最好可以做到见名知意
例如:
username
、
studentNumber
等。
10 类型转换
在
Java
中,一些数据类型之间是可以相互转换的。分为两种情况:自动类型转换和强制类型转换
10.1 隐式转换
把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量。这种转换方式是自动的,直接书写即
可。例如:
double num = 10 ; // 将 int 类型的 10 直接赋值给 double 类型System . out . println ( num ); // 输出 10.0
类型从小到大关系图:
说明:
1.
整数默认是
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 );
2. boolean
类型不能与其他基本数据类型相互转换。
10.2 强制转换
把一个表示数据范围大的数值或者变量赋值给另一个表示数据范围小的变量。
强制类型转换格式:目标数据类型 变量名
= (
目标数据类型
)
值或者变量
;
例如
double num1 = 5.5 ;int num2 = ( int ) num1 ; // 将 double 类型的 num1 强制转换为 int 类型System . out . println ( num2 ); // 输出 5 (小数位直接舍弃)
11.运算符
11.1 算术运算符
11.1.1 运算符和表达式(了解)
运算符:对常量或者变量进行操作的符号
表达式:用运算符把常量或者变量连接起来符合
java
语法的式子就可以称为表达式。
不同运算符连接的表达式体现的是不同类型的表达式。
举例说明:
int a = 10 ;int b = 20 ;int c = a + b ;+:是运算符,并且是算术运算符。
a + b
:是表达式,由于
+
是算术运算符,所以这个表达式叫算术表达式
11.1.2 算术运算符
符号 | 作用 | 说明 |
+ | 加 |
参看小学一年级
|
- | 减 |
参看小学一年级
|
* | 乘 |
参看小学一年级,与
“×”
相同
|
/ | 除 |
参看小学一年级,与“÷”相同
|
% | 取余 |
获取的是两个数据做除法的余数
|
11.2 自增自减运算符
符号 | 作用 | 说明 |
++ | 自增 |
变量的值加
1
|
-- | 自减 |
变量的值减
1
|
注意事项:
++
和
--
既可以放在变量的后边,也可以放在变量的前边。
单独使用的时候,
++
和
--
无论是放在变量的前边还是后边,结果是一样的。
参与操作的时候,如果放在变量的后边,先拿变量参与操作,后拿变量做
++
或者
--
。
参与操作的时候,如果放在变量的前边,先拿变量做
++
或者
--
,后拿变量参与操作。
最常见的用法:单独使用。
int i = 10 ;i ++ ; // 单独使用System . out . println ( "i:" + i ); // i:11int j = 10 ;++ j ; // 单独使用System . out . println ( "j:" + j ); // j:11int x = 10 ;int y = x ++ ; // 赋值运算, ++ 在后边,所以是使用 x 原来的值赋值给 y , x 本身自增 1System . out . println ( "x:" + x + ", y:" + y ); // x:11 , y:10int m = 10 ;int n = ++ m ; // 赋值运算, ++ 在前边,所以是使用 m 自增后的值赋值给 n , m 本身自增 1System . out . println ( "m:" + m + ", m:" + m ); // m:11 , m:11
11.3 赋值运算符
赋值运算符的作用是将一个表达式的值赋给左边,左边必须是可修改的,不能是常量。
符号 | 作用 | 说明 |
= |
赋值
|
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
|
11.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 ); // falseSystem . out . println ( a != b ); // trueSystem . out . println ( a > b ); // falseSystem . out . println ( a >= b ); // falseSystem . out . println ( a < b ); // trueSystem . out . println ( a <= b ); // true// 关系运算的结果肯定是 boolean 类型,所以也可以将运算结果赋值给 boolean 类型的变量boolean flag = a > b ;System . out . println ( flag ); // 输出 false
11.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 ,结果即为 falseSystem . out . println (( i > j ) & ( i > k )); //false & false, 输出 falseSystem . out . println (( i < j ) & ( i > k )); //true & false, 输出 falseSystem . out . println (( i > j ) & ( i < k )); //false & true, 输出 falseSystem . out . println (( i < j ) & ( i < k )); //true & true, 输出 trueSystem . out . println ( "--------" );//| “ 或 ” ,或者的关系,只要表达式中有一个值为 true ,结果即为 trueSystem . out . println (( i > j ) | ( i > k )); //false | false, 输出 falseSystem . out . println (( i < j ) | ( i > k )); //true | false, 输出 trueSystem . out . println (( i > j ) | ( i < k )); //false | true, 输出 trueSystem . out . println (( i < j ) | ( i < k )); //true | true, 输出 trueSystem . out . println ( "--------" );//^ “ 异或 ” ,相同为 false ,不同为 trueSystem . out . println (( i > j ) ^ ( i > k )); //false ^ false, 输出 falseSystem . out . println (( i < j ) ^ ( i > k )); //true ^ false, 输出 trueSystem . out . println (( i > j ) ^ ( i < k )); //false ^ true, 输出 trueSystem . out . println (( i < j ) ^ ( i < k )); //true ^ true, 输出 false
11.6 短路逻辑运算符
符号 | 作用 | 说明 |
&& |
短路与
|
作用和
&
相同,但是有短路效果
|
|| |
短路或
|
作用和|
相同,但是有短路效果
|
在逻辑与运算中,只要有一个表达式的值为
false
,那么结果就可以判定为
false
了,没有必要将所有表达式的值都
计算出来,短路与操作就有这样的效果,可以提高效率。同理在逻辑或运算中,一旦发现值为
true
,右边的表达式
将不再参与运算。
逻辑与 & ,无论左边真假,右边都要执行。短路与 && ,如果左边为真,右边执行;如果左边为假,右边不执行。逻辑或 | ,无论左边真假,右边都要执行。短路或 || ,如果左边为假,右边执行;如果左边为真,右边不执行
int x = 3 ;int y = 4 ;System . out . println (( x ++ > 4 ) & ( y ++ > 5 )); // 两个表达都会运算System . out . println ( x ); // 4System . out . println ( y ); // 5System . out . println (( x ++ > 4 ) && ( y ++ > 5 )); // 左边已经可以确定结果为 false ,右边不参与运算System . out . println ( x ); // 4System . out . println ( y ); // 4
11.7 三元运算符
三元运算符语法格式:
关系表达式 ? 表达式 1 : 表达式 2 ;
解释:问号前面的位置是判断的条件,判断结果为
boolean
型,为
true
时调用表达式
1
,为
false
时调用表达式
2
。其
逻辑为:如果条件表达式成立或者满足则执行表达式
1
,否则执行第二个。
举例:
int a = 10 ;int b = 20 ;int c = a > b ? a : b ; // 判断 a>b 是否为真,如果为真取 a 的值,如果为假,取 b 的值