Java基础语法【二】
第一节 标识符
1.1概念
Java对包、类方法、参数和变量等要素命名时,使用的字符序列成为标识符。
1.2 标识符的命名规则
1. 由字母(含英、中、日、俄等)、数字、下划线(_)和美元符号($ 音:dollar)组成。
2. 不能以数字开头。
3. 区分大小写。
4. 长度无限制。(一般不要超过15个字符)
5. 不能是Java中的保留字和关键字。
1.3 标识符命名习惯
1. 标识符命名习惯:见名知意。
2. 变量名,方法名,参数名: 首字母小写,如果多个单词组成,第一个单词首字母小写,剩下的单词首字母大写(驼峰式命名法)。
3. 类名:单词首字母大写,多个单词组成每个单词首字母大写(帕斯卡命名法)。
合法的标识符:
HelloWorld
非法的标识符:
Hello World
1.4 关键字保留字
关键字:
Java中有一些赋予特定的含义,有专门用途的字符串称为关键字(keyword),全部为小写。
保留字:
没有定义用途,但保留备用。
第二节 常量、变量
2.1 常量
概念:
常量就是常见的数据(也称为数据常量),是程序运行中固定不变的数据。
整型常量(int):
123 、100、200、250、500 int ```
Java语言整型的三种表示形式:
十进制整数:如12, -314, 0,8,7。
八进制整数:要求以0开头,如0127表示八进制的127 。
十六进制数:要求0x或0X开头,如0x1df3。
浮点数常量(小数) :
3.14 float ...
字符常量:
’a’ char
布尔(逻辑)常量:
true、false boolean
字符串String常量:
"a"、"abc"、"hello world", ""
null常量:
表示的引用为空对象
2.2 变量
概念:
变量就是保存程序执行中的数据的一块存储空间,可以变化的数据。
变量其实是内存中的一块存储区域,使用变量名来访问这块区域。因此,每一个变量使用前必须要先申请(声明),然后必须进行赋值(填充内容),才能使用,变量中存储的数据就是常量。
如:
楼 ---> 变量
楼的名称 ---> 变量名
楼的类型 ---> 变量类型
楼中的人们 ---> 变量值
2.2 变量的初始化和声明
变量声明的格式:
1. 先声明,再赋值(初始化)
数据类型 变量名;
变量名 = 变量值;
举例:
int i;
i = 100;
2. 声明同时赋值
数据类型 变量名 = 变量值;
int j = 20;
2.3 变量的分类
1. 按所属的数据类型划分:
基本类型变量:持有原始值。(原始数据类型)。
引用类型变量:持有引用值。(某个对象的引用,不是该对象本身)String 字符串。
2. 按被声明的位置划分:
局部变量:方法或语句块内部定义的变量。
成员变量:方法外部、类的内部定义的变量。
2.4 局部变量和成员变量的区别
1. 声明的位置不同:
局部变量的作用域就是它所在的方法或语句块
成员变量的作用域是整个类体。
2. 是否拥有默认值:
成员变量有默认值。
局部变量没有默认值。
第三节 数据类型
Java数据类型可分为两大类:
基本数据类型和引用数据类型。
基本数据类型:
byte、short、int、long、float、double、char、boolean
引用数据类型:
类、接口、数组、枚举。
3.1 基本数据类型
整数型---- byte(字节), short(短整型), int(整型), long(长整型)
浮点型---- float(单精度浮点型), double(双精度浮点型)
字符型---- char
布尔型---- boolean
3.2 基本数据类型的存储
Java中所有的基本数据类型都有固定的存储范围和所占内存空间的大小,而不受具体操作系统的影响,以保证Java程序的可移植性 。
byte: 1个字节 ,范围 -128 到 127
short: 2个字节 ,范围 -32768到 32767
int: 4个字节
long : 8个字节
float: 4个字节 -3.40E+38 ~ +3.40E+38 有效位数7-8位
double:8个字节 -1.79E+308 ~ +1.79E+308 有效位数15-16位
char: 2个字节 0-65535 65536个字符
boolean:不确定
3.3 整数型
Java语言的整型数值默认为int型,如:int i = 6;
要声明long型可以加‘l’或‘ L’,如:long l = 6L;
**注意**:在数值超过int的表述范围时(2147483647),需要加上l/L对long赋值.
3.4 浮点型
float : 单精度浮点数(精度7,8位) 4个字节
double: 双精度浮点数 (精度15,16位) 8个字节
Java浮点类型常量有两种表示形式
十进制数形式,必须含有小数点,例如:
3.14 314.0 0.314
科学记数法形式,如
3.14e2 3.14E2 314E2
Java浮点型常量默认为double型,如要声明一个常量为float型,则需在数字后面加f或F,如:
double d = 3.14; float f = 3.14f;
**注意**:float double存储的数据都是近似值。
3.5 字符型
char型数据用来表示通常意义上“字符”
char c = 'A'; char c2= '好';
Java字符采用Unicode编码,每个字符占两个字节,因而可用十六进制编码形式表示(Unicode是全球语言统一编码)
char c1 = '\u0061';
char c2=97;
Java语言中还允许使用转义字符'\'来将其后的字符转变为其它的含义:
char c2 = '\n';
转义字符分为:
\n :换行,将光标移动到下一行的第一格。
\r :回车,将光标移动到当前行的第一格。在命令行下会覆盖。
\t :水平制表,将光标移动到下一个水平制表的位置。
\' :单引号。
\" :双引号。
\\ :斜杠。
System.out.print("i的值= "+i+"\n");
System.out.print("y的值 = "+y);
System.out.print("f的值 = "+f);
System.out.println("c的值 = "+c);
System.out.print("99\t98\t97\t96");
System.out.print("你好\"你好");
System.out.print("你好\\你好");
3.6 布尔类型
boolean类型适于逻辑运算,一般用于程序流程控制
boolean类型数据只允许取值true或false,不可以用0或非0的整数替代true和false。
boolean b = false;
boolean c = true;
3.7 Java数据类型总结
数据类型 大小 数据范围
byte(位): 8位 -128~127
short(短整数): 16位 -32768~32767
int(证书): 32位 -2147483647~2147483647
long(长整数): 64位 -9223373036854775808~9223372036854775807
float(单精度): 32位 -3.4E38~34E38
double(双精度): 64位 -1.7E308~1.7E308
char(字符): 16位 0~65535
boolean: 不确定 true、false
3.8 基本数据类型的转换
基本数据类型之间的转换分为以下两种:
*自动类型转换
*强制类型转换
*boolean 类型不能转换成任何其它基本数据类型。
2. 自动类型转换:数据类型取值范围小的转为取值范围大的
* byte ---> short--->int--->long--->float --->double
* char---> int
* byte,short,char三者在计算时会转换成int类型。
* int整型常量和字符常量在合理范围内可以直接赋值给 byte、short、int、char
* 如果一个操作数为double型,则整个表达式可提升为double型。
3. 强制类型转换:数据类型取值范围大的 转为 取值范围小的. 需要加强制转换符,也就是(要转换的数据类型)。
long l = 100L;
int i = (int)l;
但有可能造成精度降低或数据溢出,使用时要小心。
第四节 运算符和表达式
4.1 运算符的分类
1.算术运算符:+ 、 - 、 * 、 / 、 % 、 ++ 、 --
2.赋值运算符:= 、 += 、 -= 、 *= 、 /= 、 %=
3.关系运算符:> 、 < 、 >= 、 <= 、 == 、 !=
4.逻辑运算符:! 、 & 、 | 、 ^ 、 && 、 ||
5.位运算符:& 、 | 、 ^ 、 ~ 、 >> 、 << 、 >>>
6.字符串连接运算符:+
7.三目运算符 ?:
4.2 算数运算符
描述 | 运算符 | 运算符 | 描述 |
---|
加 | + | % | 求余、取模 |
减 | - | ++ | 自增 |
乘 | * | – | 自减 |
除 | / | | |
举例;
int d = 5;
System.out.println((d++));
System.out.println((d));
4.3 赋值运算符
运算符 | 描述 | 运算符 | 描述 |
---|
= | 赋值 比如:int i=10; | /= | 除等于 |
+= | 加等于 | %= | 模等于 |
-= | 减等于 | | |
*= | 乘等于 | | |
int i = 34;
i+=45;
i-=45;
i*=45;
i/=45;
i%=45;
System.out.println("i= "+ i);
4.4 关系运算符
运算符 | 描述 | 运算符 | 描述 |
---|
== | 相等于 | <= | 小于等于 |
!= | 不等于 | >= | 大于等于 |
< | 小于 | | |
> | 大于 | | |
boolean b = 3>=3;
boolean b2 = 3==2;
boolean b3 = 3!=2;
4.5 逻辑运算符
概念:
逻辑运算符用于对boolean型数据进行运算,运算结果总是boolean型。
运算符 | 描述 | 运算符 | 描述 |
---|
& | 逻辑与 | && | 短路与 |
| | 逻辑或 | || | 短路或 |
^ | 异或 | | |
! | 逻辑非 | | |
public static void main(String[] args){
System.out.println(true&true);
System.out.println(true&false);
System.out.println(true|true);
System.out.println(true|false);
System.out.println(!true);
System.out.println("-------------------");
System.out.println(true^false);
System.out.println(true^true);
System.out.println(false^false);
System.out.println("***************");
int num1=10;
int num2=5;
boolean b=num1<num2 && num1++>100;
System.out.println(b);
System.out.println(num1);
boolean b2=num1>num2 || num1++>100;
System.out.println(b2);
System.out.println(num1);
}
4.6 位运算符
运算符 | 描述 | 运算符 | 描述 |
---|
& | 按位与 | >> | 右移 |
| | 按位或 | << | 左移 |
^ | 按位异或 | >>> | 无符号右移 |
~ | 按位取反 | | |
4.7 字符串连接符+
如果字符串和基本数据类型变量、常量连接以后,结果变成了字符串。
System.out.println("Hello"+"World!");
System.out.println("Hello = "+ 5);
System.out.println("Hello = "+ 5+ 8);
System.out.println(5+"");
4.8 三目运算符
X ? Y : Z
X为boolean类型表达式,先计算x的值,若为true,整个三目运算的结果为表达式y的值,否则整个运算结果为表达式z的值。
int score = 99;
String str = score > 80? "非常优秀" : "优秀";
char c = '男';
int i = c == '男'? 5 : (int)(4.0);
System.out.println(i);
String str2 = score > 90?"非常优秀":score >= 60?"及格":"下个班见";
System.out.println(str2);
4.9 运算符的优先级
运算符 | 结合性 |
---|
[ ] . ( ) (方法调用) | 从左向右 |
! ~ ++ – | 从右向左 |
* / % | 从左向右 |
+ - | 从左向右 |
<< >> >>> | 从左向右 |
< <= > >= instanceof | 从左向右 |
== != | 从左向右 |
& | 从左向右 |
^ | 从左向右 |
| | 从左向右 |
&& | 从左向右 |
|| | 从左向右 |
?: | 从右向左 |
= | 从右向左 |
4.10 表达式
表达式:符合一定语法规则的运算符和操作数的序列
i % 10
a = 0
a==0
5.0 + a
(a - b) * c - 4
i < 30 && i % 10 != 0
表达式的值和类型
* 对表达式中操作数进行运算得到的结果称为表达式的值。
* 表达式的值的数据类型即为表达式的类型。
第五节 Scanner的使用
import java.util.Scanner;
public class Demo11{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
String s = input.nextLine();
System.out.println(s);
int num =input.nextInt();
System.out.println(num);
double d = input.nextDouble();
System.out.println(d);
}
}