1 Java基础语法
(1)关键字
有特殊含义的字符,当程序执行到关键字时会做一些特殊的处理.
public/class/static/...
学习:
碰到一个学一个
掌握:
class :创建类的关键字
(2) 标识符
自己取的名字
例如
类名:自己取/标识符
组成(必须遵守):
字母/数字/下划线(_)/$
注意:
不能以数字开头(必须遵守)
例如:
合法:
不规范:abc /abc123/_123/
规范(通俗易懂) : name/age
不合法:
1abc
规范(约定俗成,最好按照规范来):
通俗易懂
驼峰法:
类名:Demo1
使用:
类名:驼峰法 ,每个单词首字符大写
Demo1 MyTest
变量
包名
常量名
(3) 注释
不会执行的内容,便于代码的阅读,增强代码的可读性
要求:
多写注释(养成好习惯)
格式一:单行注释
//注释代码
格式二: 多行注释
/* 注释代码 */
注意:
单行注释可以嵌套单行注释
多行注释可以嵌套单行注释
多行注释不能嵌套多行注释
二 常量和变量
1 常量
不会发送的值
(1)整数常量
1 2 3 4 100
(2)小数常量
3.14 1.2 1.1
(3)字符常量
字符:单引号引起来的单个字符
例如:
'a' '1'
错误:
'97'(报错,不是java中任何类型数据)
(4)布尔常量
只有2个: true/false
(5)字符串常量
字符串:双引号引起来的字符
例如:
"hello world" "ycy" " 123abc!esfslfj "
空串: "" (做非空判断)
注意:
2 转义字符:
如果字符中需要包含有特殊含义的字符,可以使用转义字符
格式:
\字符
例如:
"abc\"123\"abc"
3 变量(重中之重)
容器,存储数据
先声明后使用: 先声明/定义/创建变量 使用变量
格式:
数据类型 变量名 [=值]
变量名:自己取名(标识符)
规范:驼峰法
第一个单词全部小写,后面每个单词首字符大写
例如:
name/age/myName/myAge/myFirstName
注意:
[]:可选 在同一个作用域中,不能有相同的变量名
使用:
//定义变量: 保存数字1 //方式一:先声明,后赋值 //格式: 数据类型 变量名; int a;//声明了一个变量 ,变量名叫做a //.. //.. //变量保存数据: 赋值/初始化 a = 1;//给变量赋值/给变量初始化/保存数据 //方式二:在声明变量的同时进行赋值 int b = 1;
掌握:
定义变量
赋值
使用
问题:
变量和标识符没区别吧 标识符定义完是不是也可以赋值
变量名:用到标识符
Java:强类型的语言
必须指定数据类型
javascript:弱类型的语言
指定类型 var
java和JavaScript不是一种语言? 都是编程语言
4 数据类型(重点)
数据类型 变量名 [=值]
变量是保存数据,要根据保存的数据来选中对应的数据类型
有哪些数据类型呢?
分成2类:
基本类型(8大基本数类型)
整型(4个):
byte (8位) : -128 ~ 127
short(16位)
int (32位,默认)
long(64位)
浮点型(2个)
float (32位,单精度浮点型)
double(64位,双精度浮点型,默认)
字符型(1个)
char(16位)
布尔型(1个)
boolean
引用类型(无数种,除了基本其它都是引用)
注意:
提到位,说的是二进制
重点的:
使用变量,选择数据类型
变量的类型转换
说明:在程序中,当把一种数据类型的值赋给另一种数据类型的变量时,需要进行数据类型转换。
分类:根据转换方式的不同,数据类型转换可分为两种:自动类型转换和强制类型转换。
(1)自动类型转换
自动类型转换也叫隐式类型转换,指的是两种数据类型在转换的过程中不需要显式地进行声明。当把一个类型取值范围小的数值直接赋给另一个取值范围大的数据类型变量时,系统就会进行自动类型转换。
自动类型转换就好比将小瓶水倒入到大瓶的换装过程。我们将小瓶水倒入到大瓶中时,由于小瓶的容量比大瓶的容量小,所以倒入的水永远不可能溢出大瓶。
Java中支持的不同数据类型之间的自动转换,如下图所示。
例如:
byte b = 3; int x = b; // 程序把byte类型的变量b转换成了int类型,无需特殊声明 double y = x; // 将int类型的变量x转换成double类型,无需特殊声明
(2)强制类型转换
强制类型转换也叫显式类型转换,指的是两种数据类型之间的转换需要进行显式地声明。当两种类型彼此不兼容,或者目标类型取值范围小于源类型时,自动类型转换无法进行,这时就需要进行强制类型转换。
强制类型转换就好比将大瓶水倒入到小瓶中一样,如果大瓶中的水的容量小于小瓶的大小,那么水是可以完全倒入的;否则多出来的水就会溢出。所以系统默认不支持这种行为,只能由开发者自己决定是否进行强制类型转换。
强制类型转换语法格式:
目标类型 变量名 = (目标类型)值;
例如:
int a = 127; byte b = (byte)a; //127在byte的存储范围内,可以正常强制转换 int c = 128; b = (byte)c;//128超出了byte的存储范围,强制转换,数据会丢失
注意:
在对变量进行强制类型转换时,会发生取值范围较大的数据类型向取值范围较小的数据类型的转换情况,如将一个int类型的数转为byte类型,这样做极容易造成数据精度的丢失。
(3)表达式类型自动提升
所谓表达式是指由变量和运算符组成的一个算式。变量在表达式中进行运算时,也有可能发生自动类型转换,这就是表达式数据类型的自动提升,如byte、short和char类型的变量在运算期间类型会自动提升为int,然后再进行运算。
例如:
byte a = 1; byte b = 2; byte c = a+b; //报错:a和b在进行运算时会自动提升为int,所以a+b的结果是int类型
7变量的作用域
定义:变量需要在它的作用范围内才可以被使用,这个作用范围称为变量的作用域。
运算符
所谓运算符就是专门用于告诉程序执行特定运算或逻辑操作的符号。
算术运算符 |
---|
赋值运算符 |
比较运算符 |
逻辑运算符 |
条件运算符 |
1 算术运算符
Java中的算术运算符就是用来处理四则运算的符号。
也是最简单和最常用的运算符号。
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
+ | 正号 | +3 | 3 |
- | 负号 | b=4;-b; | -4 |
+ | 加 | 5+5 | 10 |
- | 减 | 6-4 | 2 |
* | 乘 | 3*4 | 12 |
/ | 除(即算数中整除的结果) | 7/5 | 1 |
% | 取模(即算术中的求余数) | 7%5 | 2 |
++ | 自增(前) | a=2;b=++a; | a=3;b=3; |
++ | 自增(后) | a=2;b=a++; | a=3;b=2; |
-- | 自减(前) | a=2;b=--a; | a=1;b=1; |
-- | 自减(后) | a=2;b=a--; | a=1;b=2; |
注意:
在进行自增(++)和自减(--)的运算时,如果运算符(++或--)放在操作数的前面则是先进行自增或自减运算,再进行其他运算。反之,如果运算符放在操作数的后面则是先进行其他运算再进行自增或自减运算。
在进行除法运算时,当除数和被除数都为整数时,得到的结果也是一个整数;如果除法运算有小数参与,得到的结果会是一个小数。
在进行取模(%)运算时,运算结果的正负取决于被模数(%左边的数)的符号,与模数(%右边的数)的符号无关。
2赋值运算符
赋值运算符的作用就是将常量、变量或表达式的值赋给某一个变量。
它将运算符右边的值赋给左边的变量。
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
= | 赋值 | a=3;b=2; | a=3;b=2; |
+= | 加等于 | a=3;b=2;a+=b; | a=5;b=2; |
-= | 减等于 | a=3;b=2;a-=b; | a=1;b=2; |
*= | 乘等于 | a=3;b=2;a*=b; | a=6;b=2; |
/= | 除等于 | a=3;b=2;a/=b; | a=1;b=2; |
%= | 模等于 | a=3;b=2;a%=b; | a=1;b=2; |
在使用+=、-=、*=、/=、%= 赋值运算符时,需要进行的强制类型转换会自动完成,程序不需要做任何显式地声明
public class Example05 { public static void main(String[] args) { short s = 3; int i = 5; s += i; System.out.println("s = " + s); } }
注意:
在Java中可以通过一条赋值语句对多个变量进行赋值。
在赋值运算符中,除了“=”,其他的都是特殊的赋值运算符,以“+=”为例,x += 3就相当于x = x + 3,首先会进行加法运算x+3,再将运算结果赋值给变量x。其余的-=、*=、/=、%=赋值运算符都可依此类推。
3 比较运算符
用来对两个数值或变量进行比较。
其结果是布尔类型的true或false。
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
== | 相等于 | 4 == 3 | false |
!= | 不等于 | 4 != 3 | true |
< | 小于 | 4 < 3 | false |
> | 大于 | 4 > 3 | true |
<= | 小于等于 | 4 <= 3 | false |
>= | 大于等于 | 4 >= 3 | true |
4 逻辑运算符
是用于对布尔类型的值或表达式进行操逻辑判断的符号。
其返回值类型是布尔类型。
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
& | 与 | a & b | a和b都为true,结果为true,否则为false |
| | 或 | a | b | a和b中只要有一个为true,则结果为true,否则为false |
^ | 异或 | A ^ b | a与b不同,结果为true,否则为false |
! | 非 | ! A | 若a为false,结果为true,否则相反 |
&& | 短路与 | a && b | a和b都为true,结果为true,否则为false |
|| | 短路或 | a || b | a和b中只要有一个为true,则结果为true,否则为false |
注意:
逻辑运算符可以针对结果为布尔值的表达式进行逻辑运算。如:5 > 3 && 1 != 0的结果为true。
运算符“&”和“&&”都表示与操作,当且仅当运算符两边的操作数都为true时,其结果才为true,否则结果为false。
“&”和“&&”的区别:在使用“&”进行运算时,不论左边为true或者false,右边的表达式都会进行运算。如果使用&&进行运算,当左边为false时,右边的表达式不会进行运算,因此“&&”被称作短路与。
运算符“|”和“||”都表示或操作,当运算符任何一边的操作数或表达式为true时,其结果为true,当两边的值都为false时,其结果才为false。同与操作类似,“||”表示短路或,当运算符“||”的左边为true时,右边的表达式不会进行运算。
运算符“^”表示异或操作,当运算符两边的布尔值相同时(都为true或都为false),其结果为false。当两边布尔值不相同时,其结果为true。
5 条件运算符
也称作三元运算符(或三目运算符),由符号“? :”组合构成。
对布尔类型的表达式判断,如果为true,就执行冒号“:”前面的表达式,否者执行后面的表达式。
格式:
(boolean_expr) ? true_statement : false_statement;
规则:先判断boolean_expr的值,如果为true,就执行表达式true_statement,否者执行表达式false_statement
例如:
int store = 5; System.out.println(store <=0 ? "没有库存啦!" : "库存量为:"+store); // 输出结果为 “库存量为:5”
6 运算符的优先级
指的是在表达式中各个运算符参与运算的先后顺序
例如:先乘除,后加减
优先级 | 运算符 |
---|---|
1 | . [] () |
2 | ++ -- ~ ! |
3 | * / % |
4 | + - |
5 | << >> >>> |
6 | < > <= >= |
7 | == != |
8 | & |
9 | ^ |
10 | | |
11 | && |
12 | || |
13 | ?: |
14 | = *= /= %= += -= <<= >>= >>>= &= ^= |= |
二 选择结构语句
在实际生活中经常需要作出一些判断,比如开车来到一个十字路口,这时需要对红绿灯进行判断,如果前面是红灯,就停车等候,如果是绿灯,就通行。Java中有一种特殊的语句叫做选择结构语句,它也需要对一些条件作出判断,从而决定执行哪一段代码。
Java中的选择结构语句分为:if条件语句和switch条件语句
1 if条件语句
格式:
if(判断条件){ 满足条件执行的代码 }
执行流程:
例如:
如果一个人的年龄不满18周岁,那么就可以判定这个人是未成年人
/* 伪代码: if (年龄不满18岁) { 此人是未成年人! } */ int age = 20; if(age<18){ System.out.println("此人是未成年人!"); }
(2)if...else语句
格式:
if (判断条件){ 执行语句1 ... }else{ 执行语句2 ... }
执行流程:
例如:
int age = 16;//定义变量age,保存年龄 if(age>=18){//年龄大于等于18-->代码 //条件成立 System.out.println("恭喜你,被录用了"); }else{ //条件不成立 System.out.println("很遗憾,年龄不满足需求"); }
注意:
if...else语句还可以与前面学习的条件运算符“?:”进行替换。
System.out.println(num % 2 == 0 ? num+"是一个偶数" :num+"是一个奇数" );
(3)if...else if...else语句
格式:
if (判断条件1) { 执行语句1 } else if (判断条件2) { 执行语句2 } ... else if (判断条件n) { 执行语句n } else { 执行语句n+1 }
执行流程:
例如:
int num = 100; //根据数字输出对应的星期 if(num==1){ System.out.println("星期一"); }else if(num==2){ System.out.println("星期二"); }else if(num==3){ System.out.println("星期三"); }else if(num==4){ System.out.println("星期四"); }else if(num==5){ System.out.println("星期五"); }else if(num==6){ System.out.println("星期六"); }else if(num==7){ System.out.println("星期天"); }else{ System.out.println("无效的星期"); }
##