第二天学习JavaSE,主要内容有:
Java基础语法:
- 关键字
- 标识符
- 注释
- 常量
- 进制
- 变量
- 数据类型
1.关键字
关键字概述:被Java语言赋予特定含义的单词。
关键字特点:组成关键字的字母全部小写.
类似Notepad++这样的高级记事本,针对关键字有特殊的颜色标记,非常直观
用于定义数据类型的关键字:class,interface,byte,short,int,long,float,double.char.boolean,void.
用于定义流程控制的关键字:if,else,switch,case,default,while,do,for,break,continue,return.
判断数据真假空的关键字:true,false,null
用于定义访问权限修饰符的关键字:private,protected,public
用于定义类,函数,变量修饰符的关键字:abstract,final,static,synchronized
用于定义类与类之间关系的关键字:extends,implements
用于定义建立实例及引用实例,判断实例的关键字:new,this,super,instanceof
用于异常处理的关键字:try,catch,finally,throw,throws
用于包的关键字:package,import
其他修饰符关键字:native,strictfp(精准浮点),transient,assert。
2.标识符
标识符概述:就是给类,接口,方法,变量等起名字时使用的字符序列。
组成规则
英文大小写字母
数字字符
$和_
注意事项
不能以数字开头
不能是Java中的关键字
区分大小写
标识符常见的命名规则(见名知意)
包(其实就是文件夹,用于解决相同类名问题)全部小写
例如:alibaba.taobao.gouwuche(每一个点就是下一级相当于在alibaba/ taobao / gowuche 的文件夹构造)
类或者接口
一个单词组成:单词的首字母必须大写。
多个单词组成:每个单词的首字母必须大写。
方法和变量
一个单词:单词的首字母小写;举例:main,age。
多个单词:从第二个单词开始,每个单词的首字母大写;举例:studentAge,showAllNames()
常量
一个单词:全部大写;举例:PI
多个单词:每个字母都大写,用_隔开;举例:STUDENT_MAX_AGE
3.注释
注释概述:用于解释说明程序的文字。
Java中注释分类格式
单行注释
格式: //注释文字
多行注释
格式: /* 注释文字 */
文档注释
格式:/** 注释文字 */
目的:被javadoc工具解析生成一个说明书。
如何写注释呢?
需求:我准备干什么
分析:我准备怎么干
实现:使用Java具体格式实现
作用:除了解释说明程序,也可以帮助我们调试程序。
4.常量
常量概述:在程序执行的过程中其值不可以发生改变。
Java中常量分类
字面值常量
A:字符串常量(用双引号括起来的内容)
举例: "hello","world","HelloWorld"
B:整数常量(所有整数)
举例:100,200
C:小数常量(所有小数)
举例:10.23,110.11
D:字符常量(用单引号括起来的内容)
举例:'a','A','0'错误'ab'
E:布尔常量
举例:true,false
F:空常量
举例:null
自定义常量(先不讲)
5. 进制
进制概述:进制:就是进位制,是人们规定的一种进位方法。 对于任何一种进制--X进制,就表示某一位置上的数运算时是逢X进一位。二进制就是逢二进一,八进制是逢八进一,十进制是逢十进一,十六进制是逢十六进一。
Java针对整数常量提供了4种表现形式
二进制
由0,1组成。以0b开头(零b)
八进制
由0,1,…7组成。以0开头(零)
十进制
由0,1,…9组成。整数默认是十进制的
十六进制
由0,1,…9,a,b,c,d,e,f(大小写均可)。以0x开头(零x)
字节:由8个位组成,详细原理见下图
关于字节的规律产生以及二进制转8,16进制的转换如图(刘意老师授课时的图)
进制之间的转换:
其他进制转换到十进制的方法如图
十进制转换到其他进制
进制转换的小技巧
十进制和二进制的快速转换
8421码
8421码是中国大陆的叫法,8421码是BCD代码中最常用的一种。在这种编码方式中每一位二值代码的1都是代表一个固定数值,把每一位的1代表的十进制数加起来,得到的结果就是它所代表的十进制数码。
100转成二进制
101101转成十进制
二进制和八进制,十六进制如何转换:以十进制作为桥梁
二进制到八进制 3位组合
二进制到十六进制 4位组合
练习:100110
8421码的具体操作和任意的x进制到y进制的转换(如图)
有符号的数据表示法:在计算机内,有符号数有3种表示法:原码、反码和补码。所有数据的运算都是采用补码进行的。
原码
就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
反码
正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码
正数的补码与其原码相同;负数的补码是在其反码的末位加1。
原码反码补码的具体操作形式以及两道练习题:
两题答案:
6. 变量
变量的概述
在程序执行的过程中,在某个范围内其值可以发生改变的量。理解:如同数学中的未知数
变量定义的格式
数据类型 变量名 = 初始化值;
注意:格式是固定的,记住格式,以不变应万变
变量的组成规则
A:必须对其进行限定。(使用数据类型进行限定)
B:必须给这个空间去一个名字我们叫它变量名,用来运算
C:一定要给值
变量的定义格式如图:
使用变量的注意事项
1.作用域:变量定义在哪一级大括号中,哪个大括号的范围就是这个变量的作用域。相同的作用域中不能定义两个同名变量
2.初始化值:没有初始化值不能直接使用。
3.在一行上建议只定义一个变量,可以定义多个,但是不建议。
int a, b ;这样可以
int a , int b;这样就不行
7. 数据类型
数据类型的概述
Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同大小的内存空间。
基本数据类型
-
数值型
整数类型(byte,short,int,long) byte:1个字节(1kb)-128~127 short(短整型):2个字节(2kb)-2^15~(2^15)-1 int(整型):4个字节(4kb)-2^31~(2^31)-1 long(长整型):8个字节(8kb)-2^63~(2^63)-1 为了和int类型区分,以后写long类型后面都加L 整数默认:int 浮点类型(float,double) float(单精度):4个字节(4kb)-3.403E38~3.403E38 单精度浮点型为了区分后面加F或f double(双精度):8个字节(8kb)-1.798E308~1.798E308 小数默认:double E38的意思是10……38 字符型(char) char:2个字节(2kb) 布尔型(boolean) boolean:1个字节(1kb)(没有明确表明)
-
引用数据类型
类(class)
接口(interface)
数组([ ]) -
数据类型的转换
一般运算都是使用相同的数据类型。
注意
(1)boolean类型不参与转换
(2)默认转换
A:从小到大
B:byte,short,char – int – long – float – double(转换从小到大的顺序)
C:byte,short,char之间不相互转换,直接转成int类型参与运算。(例子两个byte做加法直接转成int类型)
(3)强制转换
A:从大到小
B:可能会有精度的损失,一般不建议这样使用。
int运算强转byte可能损失精度的原理如图
C:格式:目标数据类型 变量名 = (目标数据类型) (被转换的数据);举例 byte c = (byte)(a+b)。 -
数据类型的补充知识
在定义Long或者Float类型变量的时候,要加L或者f。
整数默认是int类型,浮点数默认是double。
byte,short在定义的时候,他们接收的其实是一个int类型的值。
这个是自己做了一个数据检测的,如果不再它们的范围内,就报错。byte值的问题
byte b1 = 127;
byte b2 = (byte)128; //-128
byte b3 = (byte)129; //-127
byte b4 = (byte)130; //-126
byte的范围:-128 ~ 127
128:10000000
-128:10000000 (这里的1即是符号位,也是数值位)浮点数(float)的二进制存储方式:float类型数字在计算机中用4个字节存储。遵循IEEE-754格式标准:
一个浮点数有2部分组成:底数m和指数e底数部分 使用二进制数来表示此浮点数的实际值
指数部分 占用8bit的二进制数,可表示数值范围为0-255但是指数可正可负,所以,IEEE规定,此处算出的次方必须减去127才是真正的指数。
所以,float类型的指数可从-126到128底数部分实际是占用24bit的一个值,但是最高位始终为1,所以,最高位省去不存储,在存储中占23bit
科学计数法。格式:
SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
S表示浮点数正负
E指数加上127后的值得二进制数据
M底数举例:
17.625在内存中的存储首先要把17.625换算成二进制:10001.101
整数部分,除以2,直到商为0,余数反转。 小数部分,乘以2,直到乘位0,进位顺序取。
在将10001.101右移,直到小数点前只剩1位:
1.0001101 * 2^4 因为右移动了四位这个时候,我们的底数和指数就出来了
底数:因为小数点前必为1,所以IEEE规定只记录小数点后的就好。所以,此处的底数为:0001101
指数:实际为4,必须加上127(转出的时候,减去127),所以为131。也就是10000011
符号部分是整数,所以是0
综上所述,17.625在内存中的存储格式是:
01000001 10001101 00000000 00000000数据类型转换之默认转换
byte,short,char – int – long – float – doublelong: 8个字节
float:4个字节
为什么float在long的后面
A:它们底层的存储结构不同(具体原因在上面)。
B:float表示的数据范围比long的范围要大
long:2^63-1
float:3.410^38 > 210^38 > 28^38 = 22338 = 2*2^114 > 2^63-1