JAVA第二章知识点
本章知识梳理
2.1 关键字
2.2 标识符
2.3 变 量
2.4运算符
2.5 程序流程控制
2.6 方法
2.1 关键字
关键字(keyword)的定义和特点
定义:被java语言赋予了特殊含义,用做专门用途的字符串(单词)
特点:关键字中所有字母都为小写
保留字(reserved word)
定义:现有java版本尚未使用,但以后版本可能会作为关键字使用。自己命名标识符要避免使用这些保留字
goto const
2.2 标识符(ldentifier)
定义:java对各种变量,方法和类等要素命名时使用的字符序列称为标识符
技巧:凡是可以自己起名字的地方都叫标识符
命名规则(必须遵守)
26英文字母 0-9 $ _ 组成 数字不可以开头
($禁止使用)
不可以使用关键字和保留字,可以包换关键字和保留字
java中严格区分大小写,长度无限制
不能有空格
为了提高阅读性,要尽量有意义,“见名知意”
java采用Unicode字符集,因此标识符也可以使用汉字声明,但是不建议
命名规范(可以不遵守)
包名 多单词组成时所有字母都小写:xxxyyyzzz
类名,接口名 所有单词的首字母全部大写 XxxYyyZzz
变量名和方法 首字母小写,后面的单词首字母都大写 xxxYyyZzz
常量名 全部大写用_下划线连接 XXX_YYY_ZZZ
2.3 变量
变量的概念
内存中的一块被命名的被特定的数据类型约束的区域, 此区域中可以保存数据类型范围内的数据,而且此空间中的数据可以变化。
常量 : 不可以变化的量, 有2种 ,字面量 和被final修饰的量
变量注意事项
1.先声明,后使用
2.必须有数据类型和变量名
3.必须初始化,因为内存空间中的老数据不确定,必须写成确定数值
4.变量有其数据范围
5.同一范围,变量不能重复声明
6.变量的作用域:一对{ }之间有效
在方法体外,类体内声明的变量称为成员变量。
范围大 寿命大
在方法体内部声明的变量称为局部变量。
范围小 寿命短
数据类型的作用
确定空间大小
确定空间数据的范围大小
确定空间的数据可以做什么
数据类型
1.基本数据类型
基本数据类型在内存空间中保存的是数据本身
整数类型
byte 1字节 -128---127 (1byte=8bit)
short 2字节 -32768---32767
int 4字节 -20亿---20亿
long 8字节 -900亿---900亿 数值结尾必须加L默认是int类
浮点类型
float (单精度) 4字节 -1038-1038 数值结尾必须加F默认是double
double(双精度) 8字节 -10308-10308
字符型
char在内存空间中保存的是字符的Unicode编码值
char 2字节 0-65535 char型字面量必须使用 ''
声明一个字符或转义字符 直接使用unicode值来表示字符型常量
charchar类型是可以进行运算的。因为它都对应有Unicode码
无法使用字面量的字符必须使用转义字符
\t 制表 \r回车 \n换行 ' '空格
补充 Unicode:一种编码,将世界上所有的符号都纳入其中。每一个符号都给予一个独一无二的编码,使用 Unicode 没有乱码的问题。
UTF-8 是在互联网上使用最广的一种 Unicode 的实现方式
布尔型(boolean)
boolean 类型适于逻辑运算,一般用于程序流程控制
boolen 数据类型只允许两个值 true false 无null
占用一个字节,false是0 ture是1
int不能强转为布尔值
字符串Stirng
String类型变量属于引用数据类型,翻译为字符串
声明字符串类型变量时,使用一对""
String可以和八种基本数据类型变量做运算,且运算只能是连接运算,运算结果也是String类型 用+号连接
String s1 = null; //空,没有对象
String s2 =""; //空串,有对象没内容
String s3 ="abc"
//字符串可以和任意数据用+号连接,结果产生一个新的字符串
s2 = s2+100 //"abc100"
//把基本数据转化为字符串 加空串
String s4 = ""+110;
2.引用数据类型
存空间中保存的是其他数据的地址, Reference
类(class)
接口(interface)
数组([])
基本数据类型转化:
1.自动类型提升:
结论:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。
byte --
char--
如果右边的值的范围小于等于左边的变量的范围类型自动转
如果右边的值范围大于左边的变量的范围类型,必须强转
任意非long整数作运算, 结果总是int型
混合运算中,结果数据类型取决于其中范围最大的那个
当把任何基本类型的值和字符串值进行连接运算时(+),基本类型的值将自动转化为字符串类型。
常量运算不受影响
2.强制类型转换
自动类型提升运算的逆运算
1.需要使用强转符:()
2.强制类型转化,可能会导致精度损失
3.布尔类型不可转化
4.char没有符号位 所以转化有风险
class VariableTest3{
public static void main(String[]args){
double d1 = 12.3;
int i1 = (int)d1;//截断操作,不会四舍五入
System.out.println(i1);
}
}
说明:此时的容量大小指的是,表示数的范围的大小。比如float容量要比long的容量大
进制
二进制:0,1 ,满2进1.以0b或0B开头。
十进制:0-9 ,满10进1.权值 = 10的n次方 10^
八进制:0-7 ,满8进1. 以数字0开头表示。
十六进制:0-9及A-F,满16进1. 以0x或0X开头表示。此处的A-F不区分大小写
十六进制 0x3215
3*16^3 12288
2*16^2 512
1*16^1 16
5*16^0 5
=12821
二进制
0x5A = 01011010 90 三者是同一个东西的不同表现
1byte=8bit
十二 十六
0 00000
1 00011
2 00102
3 00113
4 01004
5 01015
6 01106
7 01117
8 10008
9 10019
101010A
111011B
121100C
13 1101D
141110E
151111F
8421
2个16进制数 正好对于应8个比特,所以2个十六进制就是一个字节
0x3a = 0011 1010
1010 0110 = 0xA6
计算机底层所有数据都是二进制补码的的形式存储
表示符号的的符号位总是在最高位 是0表示正数是1是负数
补码:正数补码就是自身
负数的补码就是它的相反数全部取反再加1
过程:
算负数 -1 取反 1101 1100
-1 1101 1011
取反 0010 0100 = -36
2.4 运算符
1.位运算符
<< 左移 空位补0,被移除的高位丢弃,空缺位补0。左移一位相当于乘2
》》右移 被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1。右移一位相当于除2
》》》无符号右移 被移位二进制最高位无论是0或者是1,空缺位都用0补。
& 与运算 二进制位进行&运算,只有1&1时结果是1,否则是0,结果总是小于等于运算数
| 或运算 二进制位进行 | 运算,只有0 | 0时结果是0,否则是1,结果总是大于等于运算数
^ 异或运算 相同二进制位进行 ^ 运算,结果是0;不相同二进制位 ^ 运算结果是1,结果不稳定, 通常用于加密
取反 所有二进制位取反, 0变1, 1变0。正数变负数, 负数变正数,结果都是一个数的相反数减1
2.算数运算符
+正 -负 +加 -减 *乘 /除 %取模 ++自加 --自减
除号“/”,它的整数除,只保留整数部分而舍弃小数部分
对负数取模,可以把模数负号忽略不记,但被模数是负数则不可忽略。
N%M结果总是小于M
N%M结果为0,说明N能被M整数
N%2结果为0,说明N为偶数
N%2结果为1,说明N为奇数
A++ 后加加 先用后加
++A 前加加 先加后用
int a =8;
a = a++;//a=8 有临时空间,要注意
a = ++a;//a=9
for(int i = 0; i < 10;i++)
for(int i = 0; i != 10;++i)//效果相同节约空间
3.赋值运算符
= 赋值运算符
int a,b,c,d;
a=b=c=d=30;//支持连续赋值
+= n=n+10 n+=10 效果相同,但是不会引起数据类型的变化
-= *= /= %= 同理
4.比较运算符
== 相等于 !=不等于 大于 <=小于等于 >=大于等于
比较运算符的结果都是boolean型,ture or false
比较运算符的比大小操作,只适用于基本类型数据中的数值型
5.逻辑运算符
&逻辑与 |逻辑或 (禁止使用) !逻辑非(相反值)
&&短路与 ||短路或 ^逻辑异或(相同为false不同为ture)
&与&& 相同点 运算结果一样 符号左边是true时,二者都会执行右边的运算,反之&&不会执行右边运算
|与|| 相同点 运算结果一样 符号左边是false时,二者都会执行右边的运算,反之||不会执行右边运算
6.三元运算符
格式 (条件表达式)?表达式1:表达式2:
条件为ture 运算后的结果是表达式1
条件是false 运算后的结果是表达式2
表达式1和2必须同种数据类型
//输出两个值中的最大值
int n1 = Integer.parseInt(args[0]);//参数可以多不能少
int n2 = Integer.parseInt(args[1]);//必须传对应数值类型
int max = (n1>n2)? n1:n2;//如果两个值相同取值b
System.out.println("max:="+max);
2.5 程序流程控制
顺序结构
程序从上到下逐行执行,中间没有任何判断和跳转
分支结构
根据条件选择性的执行某段代码
有if...else和switch-case两种分支语句
if...else
if(条件表达式){执行代码块}//满足执行,不满足不执行
//只有一个语句的时候可以不加代{}
if(条件表达式){执行代码块1}//为真执行
else{执行代码块2}//为假执行 语句1和2是互斥的,不可能都执行或都不执行
if(条件1){
语句1
}else if(条件2){
语句2
}else if(条件3){//若前面条件2为真,那即便条件3为真也不执行,截断操作
语句3
}else{
语句4
}
//if嵌套 可以无限嵌套
if(条件表达式1){
if(条件表达式2){执行代码块2}
else{执行代码块3}
}
else{
if(条件表达式2){执行代码块2}
else{执行代码块3}
}
switch-case
作用用于穷举变量中的可能的值,不可能情况太多
switch(变量){
case 常量1:
语句1;
break;//跳出循环
case 常量2:
语句2;
break;
default://如果所有的case语句都不满足 则执行default
语句;
break;
}
注意事项
switch(表达式)中表达式的返回值必须是下述几种类型之一:byte,short,char,int,String, 枚举;
case子句中的值必须是常量,且所有case子句中的值应是不同的;
default子句是可任选的,当没有匹配的case时,执行default
break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到后面第一个break语句或直接执行到switch结尾(这种现象称为穿透)
循环结构
根据循环条件,重复性的执行某段代码。
有whlie,do,,,whlie,for三种循环语句
注意:JDK1.5提供了foreach循环
标签:语句,知识点,执行,JAVA,运算,int,数据类型,运算符,第二章
来源: https://www.cnblogs.com/zhaoyongbin0203/p/13728011.html