JAVASE 0711
1.常量:字面值常量和自定义常量
字面值常量分为整数常量、小数值常量、布尔常量、字符常量、字符串常量、以及空常量
自定义常量在面向对象时会讲到,以下进行举例:
整数常量 int a=100;200; 3;
布尔常量 boolean b=true;false;
小数值常量 float c=3.13;3.1415;
字符常量 char ch='b';
字符串常量 String str="hello world";
空常量 null
另:Java中针对整数常量提供了四种表现形式:
分别为 二进制(0B) 八进制(0) 十进制 和十六进制(0x)
2.进制回顾
因为有学习BCD码的基础所以对基本二进制、八进制、十进制、十六进制的转换不多做记录 其中二进制转换八进制 八进制转换十六进制均可以直接划位转换,不需要二转十转八,八转十六同理。以下仅对有数据符号表示法的几种方式的注意事项进行掌握。
原码:就是二进制定点表示法,最高位为符号位,”0“正”1“负,举个例子
00001010=+10
10000111=-7
反码:正数源码反码补码一致,负数反码符号位不动,其余位取反,例:
[+1]=[00000001]原=[00000001]反
[-1]=[10000001]原=[11111110]反
补码:负数补码在其反码基础上末位加1.
补充:计算机底层运算中一直使用补码进行运算,牵扯到一个问题,一个
字节取值范围为什么在-128——+127之间,在用补码运算的结果[10000000]补就是-128.但是实际上是使用以前的-0的补码来表示-128, 所以-128并没有原码和反码表示。使用补码, 不仅仅修复了0的符号以及存在两个编码的问题, 而且还能够多表示一个最低数.
同样的在常用的 int 类型中取值范围在[-2^31,2^31-1]之间。
3.变量和数据类型
1.变量的定义:在程序执行过程中,在某个范围内其值可以发生改变的量(是呢村中开辟的小块空间存储数据)。
2.格式:数据类型 变量名=变量值;
3.变量的数据类型和大小:
Java中常见的数据类型分为:基本数据类型和引用数据类型。(数组,类,接口)
基本数值类型:
(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.403*10^38 ~ 3.403*10^38
double 8(64bit) -1.798*10^308 ~ 1.798*10^308
(2):字符型 char 2(16bit) 0 ~ 2^16 - 1 = 65535
(3):布尔型 boolean 1
值得注意的是:
1.整数默认为 int 类型,浮点数默认为 double 类型。而这个默认会牵扯到后续的隐式转换。
2.同一作用域中不能定义两个同名变量(即一个大括号中),变量必须赋值才能使用。
4.数据类型的转换
隐式转换:Java中的默认转换规
(1): boolean类型不能转换为其他的数据类型
(2): byte,short,char—int—long—float—double
(3): byte,short,char之间不转换,他们参与运算首先转换为int类型
以下举个例子:
byte a=10;
byte b=20;
short c=120;
long e=1L;
float f=3.2F;
//byte aa=a+b;报错!
//当byte short char 在参与运算时,会自动提升为int类型,如果还有long float double 参与运算,则会相应的提升为long float double 类型。boolean 类型不参与数学运算。
double r=a+b+c+e+f;
//同样的,大类型永远装的下小类型;使用double 是可以的。
强制转换:强制类型类型转换,就数据类型强制的转换为目标类型,原理就是把多余字节丢弃掉,保留目标数据类型的字节,
(1):强制转换的格式为 目标数据类型 变量名=(目标数据类型)(被转换的数据) (2):案例演示如下
byte a=10;
byte b=120;
byte c=(byte)(a+b);
System.out.println(c);
//编译运行后c为-126,出现精度损失,不建议使用。以下为解决思路:字节不够及字节在进行转换。
short r=(short)(a+b);
System.out.println(r);
//编译运行后r为130。
另,还应注意到当 b=110时,即使使用 byte c=(byte)(a+b) ,其编译并不报错,且运行结果 c=120 无误。
这就牵扯到Java的另一个机制,常量优化机制。
(3):常量优化机制:当多个常量参与运算时,会先计算他们的结果在不在这个数据类型范围内,如果在则不报错。(在GBK码表中,一个汉字占两个字节。)
5.字符及字符串参与数学运算
首先,字符参与运算时,会查找ASCII码表中的十进制值。 如:
(1):a ‘97’
(2):A ‘65’
(3):0 ‘48 ’
其次,字符串拼接时,相加作用和拼接符的作用 当 + 运算两端任意一端是字符串,就会将两段拼接起来形成新的字符串。以下举例说明:
System.out.println("2"+3); // 输出为"23"
System.out.println(2+"3"); // 输出为"23"
System.out.println("2"+"3"); // 输出为"23"
System.out.println("hello" + 'a' + 1);
//输出为"helloa1"
System.out.println('a' + 1 + "hello");
//此时查询ASCII码表可得 ’a‘=97,"98hello"
6.运算符
java:运算符的定义:对变量和常量进行操作的符号称之为运算符。
运算符的分类:(1):算数运算符 如:+ — * / % ++ --
(2):赋值运算符
(3):比较运算符 如:> < >= <= instanceof 其输出为布尔值,true,false
(4):逻辑运算符
(5):位运算符
(6):三目运算符
重点讲解:1.算术运算符 ++ ——的用法,
其中 ++:对原有数据+1
--: 对原有数据-1
需要注意的是自加自减放在操作数前后是不同的。区别在于:放在操作数前面,先自增或自减,然后再参与运算。放在操作数后面,先参与运算在进行自加自减。具体演示如下: int a = 10;
int b = 20;
int c = 30;
a = b++; //a=20 b=21
b = ++c; //b=31 c=31
a--; //a=19
2.赋值运算符
(1):基本的赋值运算符:=,把=右边的数据赋值给左边。
(2):扩展的赋值运算符:+=,-=,*=,/=,%=,+= 把左边和右边做加法,然后赋值给左边。
(3):赋值运算符要求左边的数据必须是一个变量
3.关系运算符
(1):==,!=,<,>,<=,>=,instanceof
(2):其输出结果永远为 boolean 值
```
```