常量
什么是常量?
就是在程序的执行过程中其值不发生改变的量;
java中常量的分类
- 字面值常量
- 自定义常量
字面值常量的分类
- 字符串常量:用双括号括起来的内容;
- 整数常量:所有整数;
- 小数常量:所有小数;
- 字符常量:用单括号引起来的内容;
- 布尔常量:较为特有,只有True和False
- 空常量:null
进制概述
什么是进制?
人们对定的一种进位方法。对任何一种进制——X进制就表示某一位置上的数运算时事逢X进一位。
不同进制数据的表现形式
表现形式 | 描述 |
---|---|
二进制 | 以0b开头,由1,0组成 |
八进制 | 以0开头,由0~7组成 |
十进制 | 整数默认是十进制的 |
十六进制 | 以0x开头,由0,1,2…9,a,b,c,d,e,f组成 |
进制转换
1.任意进制到十进制的转换
每一组的数据由3部分组成:
系数: 系数就是该位对应的值;
基数: X进制到十进制的转换,那么这个基数就是X;
权:从0开始,并且从右向左。
每一组数据=系数*基数^权
2.十进制转换到任意进制
快速的进制转换法
8421码
是BCD码中最常用的一种,在这种编码中每一位二值代码的1都是代表一个固定的数值,把每一位的1代表的十进制数加起来,得到的结果就是它所代表的十进制数码。
原码、反码和补码
计算机底层运算的时候使用补码进行运算。
正数的原反补相同,且符号位为0;
负数符号位1;反码是原码的符号位不变,数值位取反;
补码:给反码加1;
变量
什么是变量?
在程序执行过程中,在某个范围内其值可以发生改变的量,变量其实是内存中的一小块区域。
为什么要定义变量?
用来不断地存放同一类型的常量,并且可以重复使用。
变量的定义格式:
数据类型 变量名=变量值
数据类型
为什么有数据类型?
变量其实就是内存中的一小块区域。我们定义一个变量,其实就是开辟了一个内存空间,数据类型决定了我们的这块空间有多大。
数据类型分为:基本数据类型和引用数据类型。
基本数据类型
class Datatype
{
public static void main(String[] args)
{
//定义数据类型
byte a=127;
short b=300;
int c=5000;
long d=1L; //定义类型的数据的时候在值的后面加一个后缀L,
//代表这是一个long类型的
float e=3.14F; //定义float类型的时候后面加上一个后缀F,代表这是一个float类型的数据
double f=3.14;
//整数默认为int类型,小数默认为double类型
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(e);
System.out.println(f);
}
}
作用域问题:
变量定义在哪一级大括号中,哪个大括号的范围就是这个变量的作用域。相同的作用域终不能定义两个同名变量;
初始化问题:
没有初始化值不能直接使用;
在一行上建议之定义一个变量。
数据类型转换
class Datatype1
{
public static void main(String[] args)
{
//byte+int 的结果分别用int和byte接收
int a=10;
byte b=20;
byte ab=a+b;
System.out.println(ab);
}
}
class Datatype1
{
public static void main(String[] args)
{
//byte+int 的结果分别用int和byte接收
int a=10;
byte b=20;
//byte ab=a+b;
int ab=a+b;
System.out.println(ab);
}
}
java中默认转换规则:
boolean类型不能转换为其他的数据类型;
byte,short,char——>int——>long——>float——>doube
byte,short,char之间不转换,他们参与运算首先转换为int类型
强制转换
强制类型转换可能会损失精度,不建议使用。
class Datatype2
{
public static void main(String[] args)
{
byte a=3;
short b=488;
short c=(short)(a+b);
System.out.println(c);
byte bb=(byte)130;
System.out.println(bb);
}
}
格式:
目标数据类型 变量名=(目标数据类型)(被转换的数据)
注意事项:
存在损失精度的问题;
变量相加和常量相加
class Datatype2
{
public static void main(String[] args)
{
byte b1=3;
byte b2=4;
//byte b3=b1+b2;
/*---------- 编译 ----------
Datatype2.java:8: 错误: 不兼容的类型: 从int转换到byte可能会有损失
byte b3=b1+b2;
^
1 个错误
输出完成 (耗时 0 秒) - 正常终止*/
byte b4=3+100; //常量优化机制:如果多个常量运算,那么他会先计算结果
//有没有在这个数据类型的范围内,如果不在就报错
//7
System.out.println(b4);
}
}
java语言中的char可以存储一个中文汉字,因为java语言采用的是Unicode编码,unicode编码中的每个字符占用两个字节。
字符和字符串参与运算
class ZF
{
public static void main(String[] args)
{
System.out.println('a');
System.out.println('a'+1);
//a
//98
System.out.println("hello"+'a'+1);
//helloa1
System.out.println('a'+1+"hello");
//98hello
}
}