1.变量与标识符
数学名词:
变数或变量,是指没有固定的值,可以改变的数。变量以非数字的符号来表达,一般用拉丁字母。变量是常数的相反。变量的用处在于能一般化描述指令的方式。
计算机解释:
变量就是系统为程序分配的一块内存单元,用来存储各种类型的数据。根据所存储的数据类型的不同,有各种不同类型的变量。变量名代表这块内存中的数据
变量分类:
按所属的数据类型划分:
基本数据类型变量
引用数据类型变量
按被声明的位置划分:
局部变量:方法或语句块内部定义的变量
成员变量:方法外部、类的内部定义的变量
Java对包、类、方法、参数和变量等要素命名时使用的字符序列称为标识符。
Java标识符命名规则:
由字母、数字、下划线(_)和美元符号($)组成。
不能以数字开头。
区分大小。
长度无限制。
不能是Java中的关键字和保留关键字。
标识符命名习惯:驼峰命名法、见名知意。以单词或单词组合来命名
合法标识符:
vince、daoguo、user_name、_userName、$abc_123
非法标识符:
2UserName、user#Name、Hello 威哥、class
2.八种基本数据类型
字节(Byte)是:计算机文件大小的基本计算单位。
1个字节(Byte)
= 8个位(Bit)
Bit意为“位”或“比特”,是计算机运算的基础;
二进制中的一位,是二进制最小信息单位.二进位可以用来表示一个简单的正/负的判断,有两种状态的开关(如电灯开关) .
简单换算结果:
1个字节(Byte) = 8个位(Bit)
2个字节(Byte) = 16个位(Bit)
4个字节(Byte) = 32个位(Bit)
8个字节(Byte) = 64个位(Bit)
说明:在内存计算过程中,
字节少的数据运算速度更快;
在硬盘存储中,
字节少的数据类型也可充分存入更多的数据。
单位换算:
1byte = 8bit
1KB = 1024byte
1MB = 1024KB
1GB = 1024MB
1TB=1024G
1PB=1024TB
3.基本数据类型的声明
声明变量的格式:
(1)声明变量
类型 变量名;
(2)声明的同时给变量赋值
类型 变量名 = 值;
(3)给已声明过的变量赋值
变量名 = 值;
4.进制与转换
计算机进制通常有:十进制、二进制、八进制、十六进制
十进制:
人类算数采用十进制,可能跟人类有十根手指有关。亚里士多德称人类普遍使用十进制,只不过是绝大多数人生来就有10根手指这样一个解剖学事实的结果。
10、150、1050…
二进制:
计算机中的数据都以二进制数字保存。二进制:逢二进一。即只有0、1两个值。
如:十进制的10在计算机内保存为二进制的1010
计算机中信息的存储单位
位(Bit):表示一个二进制数码0或1,是计算机存储处理信息的最基本的单位。 字节(Byte):一个字节由8个位组成。它表示作为一个完整处理单位的8个二进制数码。
八进制:
基数为八。
Java中八进制数据要以0开头。如:0123
八进制转换成二进制:只需将每个八进制数字替换为相对应的三个二进制位即可。
现在的计算机系统很少用八进制的了。
十六进制:
二进制表示法太冗长,所以在程序中一般喜欢用十六进制
十六进制:基数为十六,逢十六进一。它用abcdef表示从0-9之上的值
Java中十六进制数据要以0x或0X开头。如:0x23D
十六进制转换成二进制只需将每个十六进制数字替换为相对应的四个二进制位即可
补码:
事实上,计算机内的二进制数值是以补码形式表示的。
补码: 一个正数的补码和其原码的形式是相同的。
负数的补码是:将该数的绝对值的二进制形式,按位取反再加1。
由此可知,二进制补码数值的最高位(最左位)是符号位:该位为0,表示数值为正数;该位为1,表示数值为负数。
主要原因:使用补码,可以将符号位和其它位统一处理;
同时,减法也可按加法来处理。
另外,两个用补码表示的数相加时,
如果最高位(符号位)有进位,
则进位被舍弃。
二进制数转换成十进制数
:
按权相加:把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。
例:原码1011.01 = 1×23+0×22+1×21+1×20+0×2-1+1×2-2
= 8+0+2+1+0+0.25
=11.25
十进制转换成二进制
整数部分:"除2取余,逆序排列"法
小数部分:"乘2取整,顺序排列"法
5.基本数据类型转换
自动类型转换:
容量小的类型自动转换成容量大的数据类型
byte,short,int,它们三者在计算时会转换成int类型
如果把int值转换为float值,或者long转换为double值,不需要强制转换,但可能丢失精度.
6.关键字
保留关键字 如:goto 和 const
7.转义字符
8.运算符与优先级
算术运算符:
表达式:由变量、常量运算符组成的式子。
++:如果是前缀:先对此变量加1,再执行其他的操作
如果是后缀:先执行其他的操作,再对此变量加1
--:同理
键盘输入:Scanner input=new Scanner(System.in);
赋值运算符:
作用是将一个值赋给一个变量,运算顺序从右到左
关系运算符:
作用是比较两边的操作数,结果总是boolean型的。
运算符练习:
1、通过键盘输入声明初始化一个圆柱体的高和底面半径,pai值是3.14,求圆柱体的体积, 并显示输出圆柱体的体积; π(r^2)h。
2、意定义一个五位整数,求各个位上的数的和。
3、根据天数(46)计算周数和剩余的天数,天数是通过键盘输入。
4、面试题:&和&&的区别
位运算符:
对两个操作数中的每一个二进制位都进行运算
位运算符功能:
1、按位取反 ~
2、按位与 &
3、按位或 |
4、按位异或 ^
位移运算符:
左移:"a<<b; "将二进制形式的a逐位左移b位,最低位空出的b位补0
带符号右移:"a>>b; "将二进制形式的a逐位右移b位,最高位空出的b位补原来的符号位
无符号右移:"a>>>b;"将二进制形式的a逐位右移b位,最高位空出的b位补0
面试题:以最快的速度计算8*4结果?
0000000000000000 00000000 00001000 8
1000000000000000 00000000 00100000 32
使用位移的方法是最快的。
int
result = 8<<2;
左移算法:位移数作为2的次幂与操作数相乘
10<<2=40
右移算法:操作数除以位移数的2次幂
通过键盘输入,初始化两个数将这两个数据交换位置后,输出显示交换后的数据。
三目运算符:
X ? Y : Z
X为boolean类型表达式,先计算x的值,若为true,整个三目运算的结果为表达式y的值,否则整个运算结果为表达式z的值。
从键盘输入一个成绩,判断该分数是否及格。
9.分支语句
if条件结构是根据条件判断之后再做处理
简单判断语句:
if(表达式){
执行语句;
}else{
执行语句;
}
如果...那么
执行过程:当程序执行到if时,首先会判断( )里面表达式的值,
如果表达式的值为真,那么就执行( )后{ }里的执行语句,
如果为假,那么就执行else后面{ }里的执行语句
& ,| ,^ ,&& ,|| , ! ,==
案例练习:
1、输入一个字符,判断是大写字母还是小写字母,输出提示信息。
2、写一个程序,判断某一年是否为闰年(被4整除但不能被100整除能被400整除)是闰年否则是平年
分支嵌套:
if(表达式1){
执行语句1;
}else if(表达式2){
执行语句2;
}else if(表达式3){
执行语句3;
}else{//可有可无
执行语句4;
}
执行过程:当程序执行到if时,首先会判断( )表达式1的值,如果为真,那么就执行{ }里面的执行语句1;然后这个if-else if结
束,如果表达式1的值为假,那么就会继续向下执行,else if后面的表达式2,为真,就执行语句2,为假,就继续向下执行,直
到为真,如果所有表达式的值都不为真,那么就会执行else后面{ }里的执行语句,然后真个if-else
if结束。
案例练习:
1、给出一个百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。90分以上输出’A’,80~89分输出’B’,70~79分输出’C’,60~69分输出’D’,60分以下输出‘E’。
2、输入两个整数,打印出它们的大小关系,是小于、大于还是等于。
3、多条件嵌套分支,设计一个程序,根据天气情况选择外出或在家,外出是逛街还是逛公园,在家是看电影还是玩游戏。
语法:
switch(表达式){
case 取值1: 语句块1;
break;
case 取值n: 语句块n;
break;
default: 语句块n+1;
break;
}
switch与if嵌套
switch(表达式){
case 取值n: 语句块n;
if(表达式){…}
break;
default: 语句块n+1;
break;
}
案例练习:
1、编写一程序实现如下功能:输入1、2、3、4、5、6、7(分别对应星期一至星期日)中的任何一个数。
2、输入一个月数,然后输出对应月份有多少天(不考虑闰年),将天数输出。
3、直接用JDK1.7的字符串条件判断,确定两个数是执行加、减、乘、除操作。
if vs switch
同:都是选择分支语句。
异:1、语法不同。
2、语句后表达式值的类型不同,if语句表达式值的类型是boolean,switch分支表达式值的类型是byte,short,char,int,枚举,String。
3、适用场景
if:变量的值在某个区间之内。
switch:变量的值是某个定值。
if vs 三目运算
三目运算符都可以使用if语句实现,反之不成立。
Java 7 switch支持String的实现原理:
这个新特性是在编译器这个层次上实现的
在编译的过程中,编译器会根据源代码的含义进行转换,不同的Java编译器可能采用不同的方式来转换
比如:如果switch语句中只包含一个case语句,那么就可以简单的将其转换成一个if语句。
如果包含一个case和一个default语句,就可以转换成if-else语句。而对于复杂的情况(多个case语句),
也可以转换成Java 7 之前的switch语句,只不过使用字符串的哈希值(整数)作为switch语句表达式的值
循环语句分为:while,do while,for
语法:
while(条件表达式){
//语句块;
}
符合条件,循环继续执行;否则,循环退出
特点:先判断,再执行
1、计算1-100之间所有整数之和。5050
2、计算10的阶乘
3、打印100以内所有的奇数,偶数和3的倍数(不包括100)
语法:
do {
循环操作
}while ( 循环条件 );
先执行一遍循环操作,符合条件,循环继续执行;否则,循环退出
特点:先执行,再判断
1、逆序输出10~0
2、Java阶乘求和 1!+2!+...+10!
语法:
for(初始化参数;判断条件 ;更新循环变量){
循环体;
}
关键字:continue 表示跳过当次循环,继续下次循环。
For循环的六种写法:
1、标准写法
2、表达式1省略,但在外部声明
3、表达式2省略,死循环
4、表达式3省略,但是要声明在循环内部
5、表达式1,3省略,但是要声明在循环的外部和内部
6、三个表达式都省略,死循环
1、打印输出0~200之间能被7整除但不能被4整除的所有整数;
2、输出10个斐波那契(Fibonacci)数列:1 1 2 3 5 8 13 21 34 55。(特点:第1,2两个数值为1,从第三个数开始,该数是其前面两个数之和)
10.循环语句
1、变量与标识符(重点)
2、八种基本数据类型(重点)
3、基本数据类型的声明(重点)
4、进制与转换(了解)
5、基本数据类型转换(重点)
6、关键字(了解)
7、转义字符(了解)
8、运算符与优先级(重点)
9、分支语句(重点)
10、循环语句(重点)