Java概述
Java概述
一、常量
二、变量
三、运算符
一、常量
- 常量的概述和使用
- 常量:就是在程序的执行过程中值不变的量。
- 分类:字面值常量和自定义常量
- 字面值常量
包括字符串常量,整型常量,浮点型常量,字符常量,布尔常量,空常量。
字符串常量 eg:"HelloWorld" , "Hello" 整型常量 eg:12 , 13 浮点型常量 eg:1.1 , 23.101 字符常量 eg:'a' , '我' , '0' 布尔常量 eg:true , false 空常量 eg:null
- 例如,常量的输出,
class Demo {
public static void main(String[] args) {
//输出不同类型的字面值常量
//字符串常量
System.out.println("HelloWorld!");
System.out.println("Hello");
//整型常量
System.out.println(12);
System.out.println(100);
//浮点型常量
System.out.println(1.1);
System.out.println(12.101);
//字符常量
System.out.println('a');
System.out.println('我');
System.out.println('0');
//布尔常量
System.out.println(true);
System.out.println(false);
//空常量,输出会报错
//反例//System.out.println(null);
}
}
运行的结果如下:
- 进制概述和进制转换
- 什么是进制?
就是进位制,是人们规定的一种进位方法。 对于任何一种进制--X进制,就表示某一位置上的数运算时是逢X进一位。 - 常用的进制:二进制,八进制,十进制,十六进制
- 不同进制的数据表现形式
二进制:由 0 和 1 组成 八进制:由 0 ~ 7 组成 十进制:由 0 ~ 9 组成 十六进制:由 0 ~ 9 ,A ~ F 组成
- 进制之间的转换
二,八,十六进制转换十进制,转换方法:位权展开发
- 二进制->十进制
二进制数:1011
二进制 | 转换 | 十进制 |
1 | 1 * 23 | 8 |
0 | 1 * 22 | 0 |
1 | 0 * 21 | 2 |
1 | 1 * 20 | 1 |
所以 0B1011 = 1 + 2 + 0 + 8 = 11
- 八进制->十进制
八进制数:176
八进制 | 转换 | 十进制 |
1 | 1 * 82 | 64 |
7 | 7 * 81 | 56 |
6 | 6 * 80 | 6 |
所以 0176 = 6 + 56 + 64 = 126
- 十六进制->十进制
十六进制数:5AF
十六进制 | 转换 | 十进制 |
5 | 5 * 162 | 1280 |
A | 10 * 161 | 160 |
F | 15 * 160 | 15 |
所以 0X5AF = 15 + 160 + 1280 = 1455
十进制转换二,八,十六进制,转换方法:除基取余
- 十进制->二进制
十进制数:100
被除数 | 商 | 余数 |
100 | 50 | 0 |
50 | 25 | 0 |
25 | 12 | 1 |
12 | 6 | 0 |
6 | 3 | 0 |
3 | 1 | 1 |
1 | 0 | 1 |
- 十进制->八进制
先转换成二进制数,三位一划分,再算出八进制数。 - 十进制->十六进制
先转换成二进制数,四位一划分,再算出十六进制数。
- 有符号数据表示法
原码:就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。 反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。 补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
二、变量
- 变量的概述和格式
- 什么是变量?
在程序的执行过程中,其值可以发生改变的量。 - 变量的作用?
可以不断存放同一类型的变量,并且可以重复使用。 - Java中变量的定义格式
数据类型 变量名 = 变量值
- 数据类型概述和分类
- 数据类型是什么?
数据类型是用来限制系统开辟给变量内存空间的大小。 - Java中数据类型的分类
- 基本数据类型
包括数值型(整型、浮点型、字节型)、字符型、布尔型。 - 引用数据类型
不同数据类型变量的输出
class Demo {
public static void main(String[] args) {
//不同数据类型变量的输出
int a = 12 ; //整型
double b = 1.00234 ; //浮点型
byte c = 125 ; //字节型
char d = 'X' ; //字符型
boolean e = true ; //布尔型
System.out.println(a) ;
System.out.println(b) ;
System.out.println(c) ;
System.out.println(d) ;
System.out.println(e) ;
}
}
输出结果
注意:变量定义在哪一级大括号中,哪个大括号的范围就是这个变量的作用域。相同的作用域中不能定义两个同名变量。没有初始化值不能直接使用;建议一行只定义一个变量。
- 隐式转换
'+'是一个运算符,它来做数据的加法。
- Java中的默认转换规则:
- boolean类型不能转换为其他类型
- byte,short,char—int—long—float—double
- byte,short,char之间不转换,他们参与运算首先转换为int类型
- 转换的例子
如果这样那么编译器就会报错
class Test1 {
public static void main(String[] args) {
//定义并两个byte类型的变量
byte a = 1 ;
byte b = 2 ;
byte c = a + b ;
System.out.println(c);
}
}
这是因为 a + b 计算完成后会自动转换为int类型,所以将 c 变量定义为int类型就不会有错误出现。
- 强制类型转换
- 强制类型转换的格式
目标数据类型 变量名=(目标数据类型)(被转换的数据); - 注意,在不知道运算结果的情况下,不要使用强制类型转换,因为这样可能会造成数据的丢失。
那么,为什么数据会丢失呢?
下面我们来看一段代码;
为什么结果会是-128呢?
我们知道byte类型的变量范围是-128~+127,而此例中运算结果是128,byte类型已经村放不下这个数据,所以进行强制类型转换就造成了数据的丢失。
- 字符和字符串参与运算
System.out.println('a') ; System.out.println('a' + 1);
- 以上运算结果是什么呢?
这是因为'a'是一个char变量,而 1 是int变量,再进行运算时,会发生隐式转换,由char转换为int,所以会出现这样的结果。
三、运算符
- 运算符
- 什么是运算符?
对常量和变量进行操作的符号称为运算符。 - 分类
Java中的运算符包括算术运算符赋值运算符、比较运算符、逻辑运算符、位运算符、三目运算符。
- 算术运算符
- 算术运算符有:+ , - , * , / , % , ++ , --
- 算术运算符的基本用法
class Test1 {
public static void main(String[] args) {
int a = 10 ;
int b = 5 ;
System.out.println(1 + 12);
System.out.println(122 - 12);
System.out.println(1 * 9);
System.out.println(64 / 8);
System.out.println(10 % 3);
System.out.println( a++ );
System.out.println( ++a );
System.out.println( b-- );
System.out.println( --b );
}
}
运算的结果是
- ++ (自增), -- (自减) 运算符的使用
运算符在前,先自增(减)再运算,运算符在后,先运算再自增(减)。
- 赋值运算符
- 赋值运算符有:= ,+= , -= , *= , /= , %=
- 扩展赋值运算符
例如:a+=b --> a=a+b - 案例
short s = 1 ; s = s + 1; short t = 1 ; t += 1;
- 运行结果:
而我们把第一行注释掉后,会得到第二行的输出结果
因为虽然大部分情况下,a += 1 和 a = a + 1 的运算结果不会有差异,但是因为 1 是int型数据,在正常的 a = a + 1 运算时会发生隐式类型转换,而定义的数据类型是short,所以会报错。但是使用 += 号进行运算会进行强制类型转换,把 a + 1 的结果强制转成short类型,所以第二行的代码不会出现问题。
- 关系运算符
- Java中的比较运算符
== ,!= , < , > , <= , >= , instanceof
比较运算符的结果一定是boolean类型。 - 案例
class Test1 {
public static void main(String[] args) {
int a = 10 ;
int b = 20 ;
System.out.println( a > b );
System.out.println( a < b );
System.out.println( a == b );
System.out.println( a <= b );
System.out.println( a >= b );
System.out.println( a != b );
}
}
输出结果: