关键字的概述和使用
A:什么是关键字
就是被java语言赋予特殊含义的单词。
B:关键字的特点
组成关键的字母都是小写
C:常见关键字
class,public,static,void …
D:关键字的注意事项
(1): goto和const是java语言的保留字
(2): 类似与editplus这样的高级文本编辑器对关键字都是有颜色变化的
E:练习:判断下面那些是关键字
class,HelloWorld,public,static,void,main,String,System
标识符的概述和组成规则
“见名知意”
A:什么是标识符
就是给类,接口,方法,变量,常量等起名字时使用的字符序列
B:标识符的组成规则
(1): 英文的大小写字母
(2): 数字字符
(3): 和 C : 标 识 符 注 意 事 项 ( 1 ) : 不 能 以 数 字 开 头 ( 2 ) : 不 能 是 j a v a 中 的 关 键 字 ( 3 ) : 区 分 大 小 写 演 示 一 下 我 们 的 注 意 事 项 ; 练 习 : 下 面 那 些 是 合 法 的 标 识 符 H e l l o W o r l d , D a t a C l a s s , 9 83 , 和_ C:标识符注意事项 (1): 不能以数字开头 (2): 不能是java中的关键字 (3): 区分大小写 演示一下我们的注意事项; 练习:下面那些是合法的标识符 HelloWorld,DataClass,_983, 和C:标识符注意事项(1):不能以数字开头(2):不能是java中的关键字(3):区分大小写演示一下我们的注意事项;练习:下面那些是合法的标识符HelloWorld,DataClass,983,bS5_c7,class,DataClass#,98.3,Hell World
标识符中常见的命名规则
A:包(就是文件夹,它的存在是为了解决我们同一个目录下不能同时存在两个相同名称的文件。)
字母都是小写 itcast
B:类或者接口
一个单词: 首字母大写,其余字母小写 Student , Teacher , Spring , Struts , Hibernate
多个单词: 每一个单词的首字母都是大写,其余字母小写 StudentName , UserLoginController
C:方法或者变量
一个单词: 字母全是小写 name , age
多个单词: 从第二个单词开始,首字母大写,其余字母小写 getName , getAge
D:常量
一个单词: 字母全是大写 NAME , AGE
多个单词: 字母全是大写,每一个单词之间使用 _ 隔开 STUDENT_MAX_AGE
常量的概述和使用
A:什么是常量
就是在程序的执行过程中其值不发生改变的量。
B:Java中常量的分类
(1):字面值常量
(2):自定义常量(面向对象部分讲解)
C:字面值常量的分类
(1): 字符串常量 用双引号括起来的内容 “HelloWorld” ,“Hello”
(2): 整数常量 所有整数 12,23
(3): 小数常量 所有小数 12.34,56.78
(4): 字符常量 用单引号括起来的内容 ‘a’,‘A’,‘0’ (注意事项:单引号中只能是单个字母,单个数字,单个符号)
(5): 布尔常量 较为特有,只有true和false
(6): 空常量 null(数组部分讲解)
D:案例演示
用输出语句输出各种常量。
E:Java针对整数常量提供了4种表现形式
(1):二进制
(2):八进制
(3):十进制
(4):十六进制
进制概述和二,八,十六进制
什么是进制
就是进位制,是人们规定的一种进位方法。 对于任何一种进制–X进制,就表示某一位置上的数运算时是逢X进一位。
二进制就是逢二进一,八进制是逢八进一,十进制是逢十进一,十六进制是逢十六进一。
QS.不同进制表现同一个数据的形式特点
进制越大,表现形式越短
不同进制数据的表现形式
A:二进制的数据表现形式
由0,1组成。 以0b开头(1.7版本开始的,b可大写)
B:八进制的数据表现形式
由0,1,…7组成。 以0开头
C:十进制的数据表现形式
由0,1,…9组成。 整数默认是十进制的
D:十六进制的数据表现形式
由0,1,…9,a,b,c,d,e,f(大小写均可)。 以0x开头(x可大写)
E:案例演示
输出不同进制表现10的数据。
0b10
010
10
0x10
任意进制到十进制的转换图解
位权展开法
十进制到任意进制的转换图解
十进制到任意进制的转换原理(12345)
除基取余 直到商为0 余数反转
十进制到X进制这个基就是X。
快速的进制转换法
A:8421码及特点
8421码是中国大陆的叫法,8421码是BCD代码中最常用的一种。
在这种编码方式中每一位二值代码的1都是代表一个固定数值,把每一位的1代表的十进制数加起来,得到的结果就是它所代表的十进制数码。
B:通过8421码的方式进行二进制和十进制的相互转换
(1): 二进制到十进制的转化 (0b101101)
(2): 十进制到二进制的转化 (100)
C:二进制到八进制的简易方式 (100110) (3位为一组)
D:二进制到十六进制的简易方式(100110) (4位为一组)
原码反码补码的讲解
A:为什么要讲解有符号数据表示法
其实我们可以不讲解这部分内容,因为我们在做运算的时候,我们使用的都是十进制数据做运算,
那么为了让同学们更好了理解计算机底层是如何做运算的,所以我们就增加了该部分的讲解。
B:有符号数据表示法的几种方式
原码 , 反码 , 补码
所有数据的运算都是采用补码进行的。
演示使用原码,反码,补码分别表示一下我们的 +7 和 -7
C:原码
就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
D:反码
正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
E:补码
正数的补码与其原码相同;负数的补码是在其反码的末位加1。
原码反码补码的练习
已知某数X的原码为0B10110100,试求X的补码和反码。
原码: 10110100
反码: 11001011
11001011
1
1
1
11001100
1
补码: 11001100
已知某数X的补码0B11101110,试求其原码。
补码: 11101110
11101110
1
1
1
11101101
1
反码: 11101101
原码: 10010010
变量的概述及格式
A:什么是变量
在程序执行的过程中,在某个范围内其值可以发生改变的量(例如:苹果的价钱)
变量其实是内存中的一小块区域
B:为什么要定义变量
用来不断的存放同一类型的常量,并可以重复使用
C:变量的定义格式
数据类型 变量名 = 变量值
数据类型的概述和分类
A:为什么有数据类型
我们都知道,变量其实就是内存中的一小块区域。我们定义一个变量,其实就是开辟了一个内存空间。
如果没有数据类型,那么我们需要开辟多大的内存空间合适呢?
为了解决这种问题,java就给我们提供了不同的数据类型,那么针对不同的数据类型,在内存中分配了不同大小的内存空间。
1234
B:Java中数据类型的分类
(1): 基本数据类型
(2): 引用数据类型(后面讲解): 数组 , 类 , 接口
C:基本数据类型的详细讲解
(1): 数值型
整数型 字节数 范围
byte 1(8bit) -128 ~ 127
short 2(16bit) -2^15 ~ 2^15 - 1
int 4(32bit) -2^31 ~ 2^31 - 1
long 8(64bit) -2^63 ~ 2^63 - 1
浮点数
float 4(32bit) -3.40310^38 ~ 3.40310^38
double 8(64bit) -1.79810^308 ~ 1.79810^308
(2): 字符型
char 2(16bit) 0 ~ 2^16 - 1 = 65535
(3): 布尔型
boolean 1
整数默认是int类型的 , 浮点数默认是 double类型的
1
数据类型转换之隐式转换
A:+是一个运算符, 我们应该能够看懂,做数据的加法
B:案例演示
a:int + int
b:byte + int 的结果分别用byte和int类型接收,看效果
C:Java中的默认转换规则
(1): boolean类型不能转换为其他的数据类型
(2): byte,short,char—int—long—float—double
(3): byte,short,char之间不转换,他们参与运算首先转换为int类型
D:画图解释byte+int类型的问题
class VariableDemo3{
public static void main(String[] args) {
byte a=10;
byte b=20;
//byte c=a+b;
//错误: 不兼容的类型: 从int转换到byte可能会有损失
//自动类型提升:byte short char 在参与数学运算时,会自动提升为 int 类型,如果还有 long float double 参与运算,则会相应的提升为 long float double 类型
//byte short char 他们之间不转换,boolean类型不参与数学运算
long c=1L;
float f=1.1F;
double dd=1.8;
double r=a+b+c+f+dd;
System.out.println(r);
}
}
数据类型转换之强制转换
A:强制转换问题的引入
B:强制转换的格式
目标数据类型 变量名=(目标数据类型)(被转换的数据);
C:强制转换的注意事项
尽量不要使用强制类型转化,因为可能存在损失精度的问题。
D:案例演示
byte + int 的结果赋值给byte,加强制类型转换
E: byte b = 130;有没有问题?如果我想让赋值正确,可以怎么做?结果是多少呢?
class VariableDemo4 {
public static void main(String[] args) {
byte a=10;
byte b=127;
//强制类型转换 目标数据类型 变量名=(目标数据类型)(被转换的数据);
//强制类型转换 有可能会发生精度损失 因为强制类型转换,会丢弃掉多余字节 我们不建议进行强制类型转换
short c=(short)(a+b);
System.out.println©; //-119
// byte f = 130;//有没有问题?如果我想让赋值正确,可以怎么做?结果是多少呢?
byte f = (byte)130;
System.out.println(f); // -126
}
}
面试题之变量相加和常量相加的区别
A:案例演示
面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;
byte b4 = 3 + 4;
B:Java语言中的字符char可以存储一个中文汉字吗?为什么呢?
可以。因为Java语言采用的是Unicode编码。Unicode编码中的每个字符占用两个字节。
所以,Java中的字符可以存储一个中文汉字
class Demo4{
public static void main(String[] args) {
byte b1 = 3;
byte b2 = 4;
//byte b3 = b1 + b2;
byte b4 = 3 + 4; //常量优化机制:多个常量运行,他会先运算出结果,看这个结果,在没在这个数据类型范围内,如果在,就不报错,如果不在就报错
System.out.println(b4);
//B:Java语言中的字符char可以存储一个中文汉字吗?为什么呢?
//char 占两个字节
//可以。因为Java语言采用的是Unicode编码。Unicode编码中的每个字符占用两个字节。
// 所以,Java中的字符可以存储一个中文汉字
char ch='你';
System.out.println(ch);
//ctrl+1 编译
//ctrl+2 运行
}
}
12345678910111213141516171819
字符和字符串参与运算
A:案例演示
System.out.println(‘a’);
System.out.println(‘a’ + 1);
通过看结果知道’a’的值是多少,由此引出ASCII码表
1
B:ASCII码表的概述
记住三个值:
‘0’
‘A’
‘a’
C:案例演示
System.out.println(“hello” + ‘a’ + 1);
System.out.println(‘a’ + 1 + “hello”);
12
D:+在有字符串参与中被称为字符串连接符
找学生提问:
System.out.println(“5+5=”+5+5);
System.out.println(5+5+"=5+5");
class Demo5{
public static void main(String[] args) {
//byte short char 在参与运算时会提升为 int 类型
byte a=1;
short b=2;
char ch=’ ';
int c=a+ch; // a 97 我们字符类型在参与运算时,会提升为int类 这个值是多少,我们键盘上每个字符,都有相应的编码 这个编码表就是ASCII 码表
//需要你记住的是 ‘A’ 65 ‘a’ 97 ‘0’ 48 ‘B’ 66 ‘2’ 50
System.out.println©;
}
}
算术运算符的基本用法
A:什么是运算符
对常量和变量进行操作的符号称为运算符
B:运算符的分类
算术运算符
赋值运算符
比较运算符
逻辑运算符
位运算符
三目运算符
C:算数运算符有哪些
, - , * , / , % , ++ , –
D:案例演示
算数运算符的基本用法
注意事项:
a:整数相除只能得到整数。如果想得到小数,请使用浮点数
b:/获取的是除法操作的商,%获取的是除法操作的余数
%运算结果的符号,取决于参与运算是左边的符号
class YSF{
public static void main(String[] args) {
//常量 变量 运算符
//运算符:操作常量或变量的符号
//运算符:数学运算符,逻辑运算符,比较运算符,三元运算符,赋值运算符,位运算符
//数学运算符:+ - * / ++ – %
int a=10;
int b=3;
System.out.println(a/b); //3 两个整数相除取的是商
System.out.println(“余数:”+(a%b));//取余数
}
}
算术运算符++和–的用法
A:++,–运算符的作用
自加(++)自减(–)运算
++:自加。对原有的数据进行+1
–:自减。对原有的数据进行-1
B:案例演示
a:单独使用:
放在操作数的前面和后面效果一样。(这种用法是我们比较常见的)
b:参与运算使用:
放在操作数的前面,先自增或者自减,然后再参与运算。
放在操作数的后面,先参与运算,再自增或者自减。
class YSF2{
public static void main(String[] args) {
//数学运算符:+ - * / % ++ –
/*
int a=10;
int b=3;
System.out.println(a/b);//两个整数相除,取的是商
System.out.println(“余数:”+(a%b));//取余数
*/
//++ --
//++ 自身增加1 -- 自身减去1
//++ -- 单独使用 ++在前 或 ++ 在后没有区别
/*
int i=1;
i++; //2
++i; //3
i--; //2
--i; //1
System.out.println("i的值是:"+i);
*/
//++ 混合使用 ++在后 先使用后运算 ++在前是先运算后使用
/*
int j=1;
int c=j++; //j 2
int d=++j; //j 3
System.out.println("j的值是:"+j); //3
System.out.println("c的值是:"+c); //1
System.out.println("d的值是:"+d);// 3
*/
//++ 混合使用 ++在后 先使用后运算 ++在前是先运算后使用
int i=1; // b11 b10 b11 b14 b19 b21
int b=10+(i++)-1+(--i)+2+(i++)+3+(i--)+0+(++i);
System.out.println("i的值是:"+i); //2
System.out.println("b的值是:"+b); //21
}
}
赋值运算符的基本用法
A:赋值运算符有哪些
=, +=,-=,=,/=,%=
B:案例演示
赋值运算符的基本用法
注意事项:
a:基本的赋值运算符:=
把=右边的数据赋值给左边。
b:扩展的赋值运算符:+=,-=,=,/=,%=
+= 把左边和右边做加法,然后赋值给左边。
c: 赋值运算符要求左边的数据必须是一个变量
123
class FZYSF{
public static void main(String[] args) {
/A:赋值运算符有哪些
=, +=,-=,=,/=,%= */
//把右边这个常量10赋值给左边这个int类型的变量a
int a=10;
//a=a+2; //等价 a+=2;
a+=2; //累加
System.out.println(a);
}
}
关系运算符的基本用法及其注意事项
A:关系运算符有哪些
== ,!= , < , > , <= , >= , instanceof(后面讲解)
注意事项:
无论你的操作是简单还是复杂,结果是boolean类型。
““不能写成”=”。
B:案例演示
关系运算符的基本用法
class BJYSF{
public static void main(String[] args) {
//比较运算符:> >= < <= != == instanceof(后面讲解)
//比较运算符,不管你的表达式多么复杂,结果都是boolean类型
//true 对 false 错
//比较两个数是否相等用 == 注意区分 = 和 ==
int a=10;
int b=20;
boolean flag=ab;
flag=a flag=a<=b;//
flag=a!=b;//
System.out.println("flag: "+flag);
}
}