Java编程基础
1. 变量与标识符
1.1 变量
是指没有固定的值,可以改变的数。从计算机角度解释就是,变量就是系统为程序分配的一块内存单元,用来存储各种类型的数据。根据所存储的数据类型的不同,有各种不同类型的变量。
1.2 变量分类
按所属的数据类型划分:基本数据类型变量、引用数据类型变量; 按被声明的位置划分:局部变量:方法或语句块内部定义的变量;成员变量:方法外部、类的内部定义的变量
1.3 八种基本数据类型
| 数据类型 | 关键字 | 占用字节 | 默认值 |
|---|---|---|---|
| 布尔型 | boolean | 不定值 | false |
| 字节型 | byte | 1 | 0 |
| 短整型 | short | 2 | 0 |
| 整型 | int | 4 | 0 |
| 长整型 | long | 8 | 0 |
| 字符型 | char | 2 | ‘\u0000’ |
| 单精度浮点型 | float | 4 | 0.0F |
| 双精度浮点型 | double | 8 | 0.0D |
1.4 进制与转换
二进制数转换成十进制数:
按权相加:把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。例:原码1011.01=1x23+0x22+1x21+1x20 +0x2-1 +1x2-2 =8+0+2+1+0.25=11.25
十进制数转换成二进制数:
整数部分:"除2取余,逆序排列"法
小数部分:"乘2取整,顺序排列"法
2 89
2 44 ... 1
2 22 ... 0
2 11 ... 0
2 5 ... 1
2 2 ... 1
2 1 ... 0
0 ... 1
则整数部分 89 转换成二进制 1011001
0.625
x2
1.25
x2
0.5
x2
1.0
则小数部分 0.625 转换成二进制 0.101
1.5 基本数据类型转换
自动类型转换:容量小的类型自动转换成容量大的类型:byte,short,int它们三者在计算时会转换成int类型,如果把int值转换成float值,或者long转换成double值,不需要强制转换,但可能丢失精度。因为,byte,char, short,int, long属于精确值,精确值转近似值float、double时,可能丢失精度。
【例子】
public class Test{
public static void main(String [ ] args ){
short s1=10;//short,int在计算时转换成int类型
int s2=s1+1;//所以这个地方接收数据的类型需定义成int型,否则会报错
System.out.println(s2);
}
}
强制类型转换:容量大的类型转换成容量小的类型时,需加上强制转换符
long n=100L;
int i=(int) n;
有可能造成精度降低或者数据溢出,使用时要小心。boolean类型不能转换成任何其他数据类型。
【例子】
public class Test{
public static void main(String [ ] args ){
short s1=10;//short,int在计算时转换成int类型
s1=(short) s1+1;//所以这个地方s1需强制类型转换成short型,或者按上面的吧接受数据类型定义成int型
System.out.println(s1);
}
}
1.6 转义字符
| 符号 | 功能 |
|---|---|
| \n | 换行,将当前位置移到下一行开头 |
| \r | 回车,将当前位置移到本行开头 |
| \t | 水平制表,相当于一个Tab,即光标跳到下一个Tab位置 |
| \ \ \backslash\backslash \\ | 代表一个反斜线字符"’ |
| \ ′ \backslash' \′ | 代表一个单引号(撇号)字符 |
| \ ′ ′ \backslash'' \′′ | 代表一个双引号字符 |
1.7 算数赋值关系运算符
【例子】
import java.util.Scanner;//接受键盘输入的工具类
//赋值运算符
public class Test{
public static void main(String [ ] args ){
short s1=10;//short,int在计算时转换成int类型
//s1=s1+1;//所以这个地方接收数据的类型需定义成int型,否则会报错
s1+=1;//写成这种表达方式,就不会出现上面的类型问题
System.out.println(s2);
//创建一个键盘输入的工具
Scanner input=new Scanner(System.in);
System.out.println("请输入一个整数:");
int x1=input.nextInt();//从键盘接收一个整数
System.out.println(x1);
System.out.println("请输入一个字符串:");
String s= input.next();//从键盘接收一个字符串
System.out.println(s);
}
}
1.8 逻辑运算符
逻辑运算符:用于对boolean型结果的表达式进行运算,运算结果总是boolean型,
| 运算符 | 描述 | 示例 | 结果 |
|---|---|---|---|
| & | 与 | false & true | false |
| ∣ \mid ∣ | 或 | false & true | true |
| ^ | 异或 | true ^ false | true |
| ! | 非 | ! true | false |
| && | 短路与 | false && true | false |
| ∣ ∣ \mid\mid ∣∣ | 短路或 | false ∣ ∣ \mid\mid ∣∣ true | true |
在计算机中,非0即真,0为假
逻辑或:或1则1
逻辑与:全1则1
1.9 位移运算符
左移:"a << b; " 将二进制形式的a逐位左移b位,最低位空出的b位补0
带符号右移:"a >> b; "将二进制形式的a逐位右移b位,最高位空出的b位补原来的符号位
无符号右移:"a >>> b; " 将二进制形式的a逐位右移b位,最高位空出的b位补0
【例子】
面试题:以最快的速度计算8*4结果?
使用位移的方法是最快的。
int result = 8 << 2;
左移算法:位移数作为2的次幂与操作数相乘
// 10 * 4
10 << 2=40
右移算法:操作数除以位移数的2次幂
// 40/4
40 >> 2=10
//通过键盘输入,初始化两个数将这两个数据交换位置后,输出显示交换后的数据
Scanner input =new Scanner(System.in);
System.out.println("请输入第一个数");
int a =input.nextInt();
System.out.println("请输入第二个数");
int b=input.nextInt();
int c=a;//通过第三个变量交换两个数
a=b;
b=c;
a=a+b-(b=a);//或者通过表达式实现不用通过第三个变量交换两个数
a=a^b;//或者通过异或实现两个数交换位置最快的方法
b=a^b;
a=a^b;
System.out.println("a="+a+",b="+b);

2869

被折叠的 条评论
为什么被折叠?



