2.第2章_Java基本语法1
2021-04-13 10:35:13 1 举报
AI智能生成
🔆求知讲堂 - JAVA课程 🔸根据课堂内容整理成自己的思维导图 🔸仅供参考
作者其他创作
大纲/内容
2.1关键字
定义
被Java语言赋予了特殊含义,用做专门用途的字符串(单词)
就是在java语言编程的时候,在关键的地方使用的单词,体现关键的地方的含义,这些单词都是特有的事先定义好的
特点
关键字中所有字母都为小写
用于定义数据类型的关键字
用于定义数据类型值的关键字
用于定义流程控制的关键字
用于定义访问权限修饰符的关键字
用于定义类,函数,变量修饰符的关键字
用于定义类与类之间关系的关键字
用于定义建立实例及引用实例,判断实例的关键字
用于异常处理的关键字
用于包的关键字
其他修饰符关键字
保留字
可能以后被用来作为关键字的单词
java已经把这些单词预定了
这些单词尽量就不要在编程中去随意使用
2.2标识符
Java 对各种变量、方法和类等要素命名时使用的字符序列称为标识符
凡是自己可以起名字的地方都叫标识符
规则
组成
26个英文字母大小写
0-9
_或 $
不允许
数字开头
单独使用关键字和保留字
但是能包含关键字和保留字
包含空格
严格区分大小写
长度无限制
“见名知意”
名称命名规范
包名
多单词组成时
所有字母都小写
xxxyyyzzz
类名
多单词组成时
所有单词的首字母大写
XxxYyyZzz
接口名
多单词组成时
所有单词的首字母大写
XxxYyyZzz
变量名
多单词组成时
第一个单词首字母小写,第二个单词开始每个单词首字母大写
xxxYyyZzz
方法名
多单词组成时
第一个单词首字母小写,第二个单词开始每个单词首字母大写
xxxYyyZzz
常量名
所有字母都大写
多单词时
每个单词用下划线连接
XXX_YYY_ZZZ
2.3变量
定义
数据类型 变量名 = 变量的值
int i = 1
概念
内存中的一个存储区域
该区域有自己的名称和类型
每个变量必须先声明
后使用
该区域的数据可以在同一类型范围内不断变化 √
注意
作用域
一对{ }之间有效
比如这个k
在红色的大括号内有效
这个i
在这个灰色区域内有效
初始化值
变量一定要给它初始化
即一开始要赋值
变量是通过使用变量名来访问这块区域的
分类
按数据类型分类
声明的变量的数据类型就是变量的类型
数据类型
基本数据类型(8种)
数值型
整数类型
类型
byte
byte b = 130
这个就是超出范围了
错误的
byte b = 126
正确的
short
int
默认类型
long
各整数类型有固定的表数范围和字段长度
不受具体OS的影响
以保证java程序的可移植性
java的整型常量默认为 int 型
声明long型常量须后加‘l’或‘L’
byte b = 126
int i = 1
short s = 1
long l = 3l,这个long类型变量赋值时要在值的后面跟上一个字母l
int i = 1
short s = 1
long l = 3l,这个long类型变量赋值时要在值的后面跟上一个字母l
bit是什么单位?
计算机底层是000111这样子的
0100110,这个就7bit
1字节=8bit
字节 -- byte
浮点类型
带小数点
类型
float
double
默认类型
与整数类型类似
浮点类型也有固定的表数范围和字段长度
不受具体OS的影响
Java 的浮点型常量默认为double型
声明float型常量,须后加‘f’或‘F’
double d = 1.22
float f = 1.22f,float类型变量赋值时值后面跟上字母f
float f = 1.22f,float类型变量赋值时值后面跟上字母f
有效数字是指从左边第一个不为零的数起到最后不为零的数止
0.0314
有3个有效数字
300.146078
有9个有效数字
字符类型
char
用英文的单引号括起来的单个的
字母
char c1 = 'a'
数字
char c2 = '1'
符号
char c3 = '%'
特殊
转义字符
char c4 = '\n'
char c5 = '\''
制表符一般显示为4个空格
'\'来将其后的字符转变为特殊字符型常量
直接使用 Unicode 值来表示字符型常量
‘\uXXXX’
XXXX代表一个十六进制整数
\u000a
表示 \n
char类型是可以进行数值运算的
因为它都对应有Unicode码
Unicode码扩展自ASCII字元集
Unicode最初打算作为ASCII的补充,可能的话,最终将代替它
现在的话还是用对应的ASCII码的十进制进行运算
布尔型
boolean
true
boolean b1 = true
false
boolean b2 = false
不可以用0或非0的整数替代false和true
这点和C语言不同
用途
适于逻辑运算
一般用于程序流程控制
if条件控制语句
while循环控制语句
do-while循环控制语句
for循环控制语句
引用数据类型
值null可以赋值给任何引用类型(类、接口、数组)的变量
用以表示这个引用类型变量中保存的地址为空
类型
类
class
String类
用来接收字符串
字符串
由0到多个字母、数字、符号共同组成的一个串,这个串要用英文的双引号括起来
String str = "hello world";
System.out.println(str);
System.out.println(str);
String类属于引用类型,可用null赋值
String类是一个典型的不可变类
String对象创建出来就不可能被改变,创建出的字符串将存放在数据区
保证每个字符串常量只有一个,不会产生多个副本
int i0 = 1
int i1 = 1
以上这种会在内存中存储2个1的值
String s0 = "hello"
String s1 = "hello"
这种的,不会在内存中存在两个"hello",只存在1一个"hello"
假设"hello"的内存地址xxxxx,声明s0变量时给s0赋值"hello"实际上让s0变量引用"hello"的内存地址xxxxx;当我们再声明变量s1也赋值"hello"的时候实际上也是直接把已经存在的"hello"的内存地址给s1引用
int i1 = 1
以上这种会在内存中存储2个1的值
String s0 = "hello"
String s1 = "hello"
这种的,不会在内存中存在两个"hello",只存在1一个"hello"
假设"hello"的内存地址xxxxx,声明s0变量时给s0赋值"hello"实际上让s0变量引用"hello"的内存地址xxxxx;当我们再声明变量s1也赋值"hello"的时候实际上也是直接把已经存在的"hello"的内存地址给s1引用
拼接
String s3 = "he" + "ll" + "o";
接口
interface
数组
[]
其中基本数据类型有8种,除了这8种之外其他所有的数据类型都是引用数据类型
练习
换行
System.out.print("sss\n");
System.out.println("sss");
基本数据类型转换
类型转换
自动类型转换
容量小的类型自动转换为容量大的数据类型
容量小的数据类型可以直接放给/赋值给容量大的数据类型
byte,short,char它们相互之间是不能转换的
隐式转换
强制类型转换
自动类型转换的逆过程
将容量大的数据类型转换为容量小的数据类型
使用时要加上强制转换符(())
转换的数据类型要用英文的小括号括起来
可能造成精度降低或溢出,格外要注意
注意
通常,字符串不能直接转换为基本类型
但通过基本类型对应的包装类则可以实现把字符串转换成基本类型
如: String a = “43”; int i = Integer.parseInt(a);
boolean类型不可以转换为其它的数据类型
现在说的隐式转换和强制转换主要说的是数字的转换
数字类型的运算
不同类型的数据运算时
系统首先自动将所有数据转换成运算里面容量最大的那种数据类型,然后再进行相加
ASCII码:上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为ASCII码。ASCII码一共规定了128个字符的编码,比如空格“SPACE”是32(二进制00100000),大写的字母A是65(二进制01000001)。
char类型字符原本就是个字符,但当它要进行加减乘除这些数学运算的时候,它是转换成对应的ASCII码来进行加减乘除的,ASCII码是二进制,而我们运算的底层实际上也是二进制的加减,我们可以这么理解,我们表面上看成对应字符的十进制的加减,但底层上是二进制的加减
查表确实是double类型容量最大
byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型
多个相同类型变量参与的运算
变量要先转换为相对应的数据类型的默认类型
比如两个byte类型的变量相加,会先把两个byte类型的变量转换成默认的int类型之后再计算,得到的结果是int类型
这种情况适用于变量的数据类型的容量比默认类型的容量小
比如byte,short,都比int小
而long就比int大
没有报错
因为变量的数据类型的容量比默认类型的容量大
所以g和gg没有转换成默认的int类型再相加
所以它们是以long的形式相加,得到long的类型
字符串
用英文双引号括起来的任何字符,0~多个字符
字符串的加号运算
字符串的最近的前后加号都和字符进行拼接
但是这个加号前面的加号自己进行数值运算,然后和字符串拼接
加的必须是字符类型或者是纯数字
加号后面的加号是字符拼接,然后和字符串拼接
加的必须是字符类型或者是纯数字
字符串的赋值加号也一样
字符串只有加号运算,没有减号运算
集成开发环境
之前
创建一个java文件,编辑内容,进入doc,javac,java
现在
为了简洁
我们使用集成开发环境
里面有文本编辑器,自动编译,简化运行?随时进行代码调试
软件启动时出现open associated perspective
该信息只是用来切换当前视图,可以同意,后续可以在右上角进行修改
此透视图旨在支持java开发。它提供了包资源管理器、类型层次结构和特定于java的导航操作
视角切换见eclipse右上角
2.4运算符
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等
分类
算术运算符
用来计算数字
/
当整数除以整数的时候
舍弃小数部分
当除数或被除数为小数时
不会舍弃掉小数部分
%
取模
取余数
通俗理解
被拿走了谁,剩下了谁
剩下的那个就是结果
++/--
++/--分别是对自己加1或减1的运算
先取值赋值给k,后i再自己进行运算
int k = i++;
int k = i--;
先自己进行运算,再取值赋值给k
int k = ++i;
int k = --i;
+(字符串的加号)
字符串的拼接
赋值运算符
=
赋值符号
扩展赋值运算符
+=
可以用于字符串的拼接
在使用扩展赋值运算符时
变量在参与运算时会把结果自动强制转换为当前变量的类型
思考
short s = 3;
s=s+2; ①
s+=2; ②
①和②有什么区别?
s=s+2; ①
s+=2; ②
①和②有什么区别?
int i = 1;
i *= 0.1;
System.out.println(i);//0
i++;
System.out.println(i);//1
i *= 0.1;
System.out.println(i);//0
i++;
System.out.println(i);//1
-=
*=
/=
%=
比较运算符(关系运算符)
结果都是boolean型
要么是true,要么是false
比较运算符“==”不能误写成“=”
逻辑运算符
逻辑判断
异或
两个不同为true
“&”和“&&”的区别
单&时
左边无论真假,右边都进行运算
双&时
如果左边为真,右边参与运算
如果左边为假,那么右边不参与运算
左边确定是假了,就确定这条语句是假的了
因为"与"是要同时为true才是true的
“|”和“||”的区别
单 | 时
左边无论真假,右边都进行运算
双 | 时
当左边为真,右边不参与运算
左边确定为真了,就确定这条语句是真的了
因为"或"是一个为true就为true的
因为双 | 是短路或
意思就是会半路拦截
所以它会有这个功能
一个为true它就为true
为了开发的简便,所以从左往右的时候,从左边开始的时候,判断出它为真为假了,就可以继续进行下一步了
如果左边为假,那么右边参与运算
在不需要逻辑运算两边都参与运算的时候,尽量使用&&和||
异或( ^ )
异或,追求的是“异”
练习
位运算符
面向
二进制
是直接对二进制进行运算
进制
逢几进1
<<
空位补0,被移除的高位丢弃,空缺位补0
>>
被移位的二进制最高位
是0
右移后,空缺位补0
是1
右移后,空缺位补1
右移运算时的除于按照我们上面的运算规则的除于,取整数 --
正数右移
舍弃小数
比如27>>2 == 6
负数右移
比较特别
数字要加上1
-27>>2 == -7
>>>
被移位二进制最高位无论是0或者是1,空缺位都用0补
&
只有1&1时结果是1
否则是0
|
|运算,同位|运算,只要有1就为1
00为0
^
^运算,同位^运算时,01 10 都为1
1^1=0 , 0^0=0
相同为0
1^0=1 , 0^1=1
不同为1
~
~运算,就是把二进制的同位翻转
1变0,0变1
三元运算符
也叫三目运算符
我的答案
可以用于分支结构的判断
eg
boolean a = 3 > 2 ? true : false;
运算符优先级
()是在所有运算符优先级是最高的
可以用于分支结构的条件判断的有
三目运算符
逻辑运算符
& | ^ ......
比较运算符
> < == instanceof != >= <=......
0 条评论
下一页