第二课程 java 的基础语法的基础
1.关键字都是小写,会变为蓝色
2.标志符:
标志符就是给类,接口,方法,变量等起的名字。
起名字规则(只允许有这些东西):
英文大小写字母
数字字符
$和_
注意事项:不能以数字开头
不能是关键字
Java语言严格区分大小写(关键词有了一个字母大写,就不是关键词了)
3.常见的命名规则:
1.举例:定义一个学生类
class Student{}
不要用 class S{}因为S人不知道是什么意思
2.包(因为在同一个路径下不能用建立两个一样的类名,但是又要见名知意所以就要想办法区分开)命名全部是小写。
包其实就是文件夹。用以把相同的类名区分(每个字母都是小写)
单级包:liuyi
多级包:cn.itcase (.是用来区分的级的。)
3.类和接口 命名一个时,首字母大写。多个时,每个单词首字母必须大写
接口可以看做是和类一样的东西。
一个单词:Student
多个单词: HelloWorld,StudentName
4.方法和变量
一个单词命名单词首字母必须大写
一个单词:main ,age
多个单词,从第二个开始,每个单词首字母大写
举例:studentAge. showStudentNames() 【加()的是方法,不加的变量】
5.常量 (每个字母都大写)
一个单词全部大写 如:PI
多个单词每个字母大写用_分开 如:STUDENT_MAX_AGE
4.注释
1.单行注释//
2.多行注释不能嵌套使用:/* */(多行注释不能嵌套,会没法运行)
3.文档注释;被javadoc工具解析生成一个说明书,面对对象部分讲解(没讲)
//** */比多行注释多了一个*
注释有两个作用:
一是:可以通过注释来找程序的问题。可以帮我们调试程序。
二是:可以提高程序的阅读性
6.常量
1.字面值常量与自定义常量(后面讲)
字面值常量
1 字符串常量 如 括号内形式“ HelloWorld”输出的字符串内容
2 整数性常量 如 括号内形式 100 200
3 小数常量 如 括号内形式 10.2 11.22
4 字符常量(用单引号栝起来的单个字符) 如 括号内形式 ‘a’ ‘b’ ‘0’(这里0是一个字符不是数字)’ab’(这是错误的写法)
5布尔常量
比较特殊:括号内形式 :只有ture和false
6 空常量(后面讲)
如:null
7.进制
2进制只有两个状态,所以用8个二进制数来表示一个数据,这个单位叫字节
1byte(字节)=8bit 、、1k=1034byte
8进制是吧110 100 111 三个数字分为一块然后用十进制算法算出表示
16进制是吧1110 0001 四个一组用十进制的算法算出然后表示
规则: 进制越大,表示形式越短
3.
因为直接看数据分不出是几进制所以
二进制开头是0b (后缀一个B也表示为二进制)
八进制开头是0
十六进制开头是0x
写程序出错:
1.把100也加上引号,整数不用加
2.修改过后没有保存,就运行所以结果不会变
8.原码,反码,补码
在计算机内,有符号数有3种表示方法:原码,反码,补码。
计算机所有的运算都是采用数据对应的二进制补码运算的。
原码:
正数的原码最高位为0
负数的原码最高位为1
其他是数值位(数值位前面的用0补齐够7位)
符号位 数值位
+7 0 0000111
-7 1 0000111
反码:
正数的反码与原码一样
负数的反码符号位不变,数值位每一位取反,就是0变1,1变0
符号位 数值位
+7 0 0000111
-7 1 1111000
补码:
正数的补码与原码一样
负数的补码是补码+1(当然是最小位)(注意:不能先写符号位了,因为类似111111111最后符号位会变)
符号位 数值位
+7 0 0000111
-7 1 1111001
1.已知某数x的原码10110100B。求补码与反码
反码1 1001011
补码1 1001100
2.已知某数x的补码11101110B。求原码
补码:1 1101110
反码:1 1101101
原码:1 0010010
9.什么是变量
10.数据类型
1.
Java是一种强数据类型的语言。
2.分为基本数据类型和引用数据类型
基本数据类型:4类8种
整数:
所占字节数
byte 1
short 2
int 3
long 4
浮点数(小数):
所占字节数
float(单精度) 4
double(双精度) 8
字符:
所占字节数
char : 2
布尔:
所占字节数(很多地方没有明确给定,但因为只有0、1两种情况,所以认为是1)
boolean: 1
各种类型的取值正负都可byte(1字节): -128~127
整数默认int 小数默认 double
引用数据类型3种(以后讲)
3.
1byte=8bie \\ 1字节等于8位 (对于原码的问题:如果第8位刚好是数值型怎么办,还怎么分原码,那就用2字节来表示,进而区分原码……)
1.定义变量注意事项:
当定义的整数型变量超过 int 型时,就需要用long型写,需要注意用long时long=100000000L(L大小写都可以)。如果不写还是会按int型处理,然后会报错。
同理double型也是,如果用float型时,会提醒你可能损失精度,因为float型时4字节,可能会自动删除变量超出的部分,所以会提醒可能损失精度;
如图
字符型如图:
布尔型;
2.定义变量注意的问题:
变量适用的范围:
1.格式最好是
2.一行可以定义多个变量,但是不建议。如
3.可以同时定义多个如:
4.可以先定义一个变量,而不给初始值,只要在使用(输出)前 初始化就行;如:
5不能这样:
用,隔开会以为是同一种类型。所以计算机识别不了int 属于int类型,所以好会报错。
11.运算符
1.
一般来说用运算符的时候,左右两边数据类型要一致。
+中可以直接在括号内写然后实现运算结果如:…….println(3+4)
2.
如果前后数据类型不一致,都向大的靠近(不让就会提示可能损失精度)。如图:
下图是算的原理;
字节少的先変为,字节更长的形式,在进行运算。如图:
3.
强制转换:
不要随意去使用强制转换,因为可能确会损失精度。
就是说,当你知道。大的与小的运算结果,明明byte字节够用时,可以强制转换。
写法: byte c = (byte)(a + b);
正常写法: byte c = a + b ;
注意:如果后面是一个变量如:byte c = (byte) a 这里不用加括号,只有多个才用加。
4.
float a = (float) 29.323;
float a= 29.323F;
这两个是一样的,但是第一个是把double类型,截取然后成为float类。而第二个,本身就可以是一个float类型。
面试题:
题1.
答案是:
第二句会编译失败,因为第二句的变量相加是会自动变为int型,而b是byte,把int给byte会损失精度,所以会报错。变量赋值给变量是先在运行的时候(.class)文件时,才运算。
第三句是常量加法,是先计算出来后面的结果,如果结果在byte类型里,就不提示会损失精度,不报错。
byte b1 = 2 ,b2 = 3 , b 这种写法是可以的。
反编译工具:xjad.exe 可以把class文件读出来。方便差错。
题2.
有问题:因为byte取值范围 -128--127,130超过了,所以会报错。
byte b = (byte) 130; 这样强制转换就不会报错了。
结果:
做法分析,计算机是对补码运算的,所以要走一遍原码反码补码,在倒着走一遍才可以得出答案。
130的二进制数为10000010
原码、反码、补码都为 10000010 (正数的原 反 补一样,负数 补码+1)
int型 00000000 00000000 00000000 10000010
因为byte型,所以做截取操作 10000010 (这是补码)
符号位 数值位
补码 1 0000010
反码 1 0000001
原码 1 1111110
然后:1代表负数 ,后边的是126
-126
12.ASCII码表;
1.
System.out.println(‘a’+1);
‘a’ 97 后面的以此加 1
‘A’ 65
‘0’ 48
2.
只要字符串在前,+相当于连接符,结果自然就是字符串形式
如 System.out.println (“5+5=”+5+5) \\5+5=55
System.out.println (5+5“=5+5”) \\ 10=5+5
如果是整数+’a’ 会看成是 97 +1
双引号,表示输出字符串,单引号可以看成是char(字符)。
习惯;
1.
包名是:起包名时,全是小写,多级包名时。给什么公司做,习惯就用该公司域名的反写。如 com.baidu
2.
写代码的注释; 一般写了需求和分析就行。后两步直接写代码就行。
第二课程 java 的基础语法的基础
1.关键字都是小写,会变为蓝色
2.标志符:
标志符就是给类,接口,方法,变量等起的名字。
起名字规则(只允许有这些东西):
英文大小写字母
数字字符
$和_
注意事项:不能以数字开头
不能是关键字
Java语言严格区分大小写(关键词有了一个字母大写,就不是关键词了)
3.常见的命名规则:
1.举例:定义一个学生类
class Student{}
不要用 class S{}因为S人不知道是什么意思
2.包(因为在同一个路径下不能用建立两个一样的类名,但是又要见名知意所以就要想办法区分开)命名全部是小写。
包其实就是文件夹。用以把相同的类名区分(每个字母都是小写)
单级包:liuyi
多级包:cn.itcase (.是用来区分的级的。)
3.类和接口 命名一个时,首字母大写。多个时,每个单词首字母必须大写
接口可以看做是和类一样的东西。
一个单词:Student
多个单词: HelloWorld,StudentName
4.方法和变量
一个单词命名单词首字母必须大写
一个单词:main ,age
多个单词,从第二个开始,每个单词首字母大写
举例:studentAge. showStudentNames() 【加()的是方法,不加的变量】
5.常量 (每个字母都大写)
一个单词全部大写 如:PI
多个单词每个字母大写用_分开 如:STUDENT_MAX_AGE
4.注释
1.单行注释//
2.多行注释不能嵌套使用:/* */(多行注释不能嵌套,会没法运行)
3.文档注释;被javadoc工具解析生成一个说明书,面对对象部分讲解(没讲)
//** */比多行注释多了一个*
注释有两个作用:
一是:可以通过注释来找程序的问题。可以帮我们调试程序。
二是:可以提高程序的阅读性
6.常量
1.字面值常量与自定义常量(后面讲)
字面值常量
1 字符串常量 如 括号内形式“ HelloWorld”输出的字符串内容
2 整数性常量 如 括号内形式 100 200
3 小数常量 如 括号内形式 10.2 11.22
4 字符常量(用单引号栝起来的单个字符) 如 括号内形式 ‘a’ ‘b’ ‘0’(这里0是一个字符不是数字)’ab’(这是错误的写法)
5布尔常量
比较特殊:括号内形式 :只有ture和false
6 空常量(后面讲)
如:null
7.进制
2进制只有两个状态,所以用8个二进制数来表示一个数据,这个单位叫字节
1byte(字节)=8bit 、、1k=1034byte
8进制是吧110 100 111 三个数字分为一块然后用十进制算法算出表示
16进制是吧1110 0001 四个一组用十进制的算法算出然后表示
规则: 进制越大,表示形式越短
3.
因为直接看数据分不出是几进制所以
二进制开头是0b (后缀一个B也表示为二进制)
八进制开头是0
十六进制开头是0x
写程序出错:
1.把100也加上引号,整数不用加
2.修改过后没有保存,就运行所以结果不会变
8.原码,反码,补码
在计算机内,有符号数有3种表示方法:原码,反码,补码。
计算机所有的运算都是采用数据对应的二进制补码运算的。
原码:
正数的原码最高位为0
负数的原码最高位为1
其他是数值位(数值位前面的用0补齐够7位)
符号位 数值位
+7 0 0000111
-7 1 0000111
反码:
正数的反码与原码一样
负数的反码符号位不变,数值位每一位取反,就是0变1,1变0
符号位 数值位
+7 0 0000111
-7 1 1111000
补码:
正数的补码与原码一样
负数的补码是补码+1(当然是最小位)(注意:不能先写符号位了,因为类似111111111最后符号位会变)
符号位 数值位
+7 0 0000111
-7 1 1111001
1.已知某数x的原码10110100B。求补码与反码
反码1 1001011
补码1 1001100
2.已知某数x的补码11101110B。求原码
补码:1 1101110
反码:1 1101101
原码:1 0010010
9.什么是变量
10.数据类型
1.
Java是一种强数据类型的语言。
2.分为基本数据类型和引用数据类型
基本数据类型:4类8种
整数:
所占字节数
byte 1
short 2
int 3
long 4
浮点数(小数):
所占字节数
float(单精度) 4
double(双精度) 8
字符:
所占字节数
char : 2
布尔:
所占字节数(很多地方没有明确给定,但因为只有0、1两种情况,所以认为是1)
boolean: 1
各种类型的取值正负都可byte(1字节): -128~127
整数默认int 小数默认 double
引用数据类型3种(以后讲)
3.
1byte=8bie \\ 1字节等于8位 (对于原码的问题:如果第8位刚好是数值型怎么办,还怎么分原码,那就用2字节来表示,进而区分原码……)
1.定义变量注意事项:
当定义的整数型变量超过 int 型时,就需要用long型写,需要注意用long时long=100000000L(L大小写都可以)。如果不写还是会按int型处理,然后会报错。
同理double型也是,如果用float型时,会提醒你可能损失精度,因为float型时4字节,可能会自动删除变量超出的部分,所以会提醒可能损失精度;
如图
字符型如图:
布尔型;
2.定义变量注意的问题:
变量适用的范围:
1.格式最好是
2.一行可以定义多个变量,但是不建议。如
3.可以同时定义多个如:
4.可以先定义一个变量,而不给初始值,只要在使用(输出)前 初始化就行;如:
5不能这样:
用,隔开会以为是同一种类型。所以计算机识别不了int 属于int类型,所以好会报错。
11.运算符
1.
一般来说用运算符的时候,左右两边数据类型要一致。
+中可以直接在括号内写然后实现运算结果如:…….println(3+4)
2.
如果前后数据类型不一致,都向大的靠近(不让就会提示可能损失精度)。如图:
下图是算的原理;
字节少的先変为,字节更长的形式,在进行运算。如图:
3.
强制转换:
不要随意去使用强制转换,因为可能确会损失精度。
就是说,当你知道。大的与小的运算结果,明明byte字节够用时,可以强制转换。
写法: byte c = (byte)(a + b);
正常写法: byte c = a + b ;
注意:如果后面是一个变量如:byte c = (byte) a 这里不用加括号,只有多个才用加。
4.
float a = (float) 29.323;
float a= 29.323F;
这两个是一样的,但是第一个是把double类型,截取然后成为float类。而第二个,本身就可以是一个float类型。
面试题:
题1.
答案是:
第二句会编译失败,因为第二句的变量相加是会自动变为int型,而b是byte,把int给byte会损失精度,所以会报错。变量赋值给变量是先在运行的时候(.class)文件时,才运算。
第三句是常量加法,是先计算出来后面的结果,如果结果在byte类型里,就不提示会损失精度,不报错。
byte b1 = 2 ,b2 = 3 , b 这种写法是可以的。
反编译工具:xjad.exe 可以把class文件读出来。方便差错。
题2.
有问题:因为byte取值范围 -128--127,130超过了,所以会报错。
byte b = (byte) 130; 这样强制转换就不会报错了。
结果:
做法分析,计算机是对补码运算的,所以要走一遍原码反码补码,在倒着走一遍才可以得出答案。
130的二进制数为10000010
原码、反码、补码都为 10000010 (正数的原 反 补一样,负数 补码+1)
int型 00000000 00000000 00000000 10000010
因为byte型,所以做截取操作 10000010 (这是补码)
符号位 数值位
补码 1 0000010
反码 1 0000001
原码 1 1111110
然后:1代表负数 ,后边的是126
-126
12.ASCII码表;
1.
System.out.println(‘a’+1);
‘a’ 97 后面的以此加 1
‘A’ 65
‘0’ 48
2.
只要字符串在前,+相当于连接符,结果自然就是字符串形式
如 System.out.println (“5+5=”+5+5) \\5+5=55
System.out.println (5+5“=5+5”) \\ 10=5+5
如果是整数+’a’ 会看成是 97 +1
双引号,表示输出字符串,单引号可以看成是char(字符)。
习惯;
1.
包名是:起包名时,全是小写,多级包名时。给什么公司做,习惯就用该公司域名的反写。如 com.baidu
2.
写代码的注释; 一般写了需求和分析就行。后两步直接写代码就行。