一、常量和变量
(一)常量
1、常量概述:在程序运行过程中其值不发生改变的量。
2、Java中的分类:字面值常量、自定义常量(后期补上)
字面值常量:
(1)字符串常量:用双引号括起来的内容属于字符串常量。
System.out.println("Hello World!!");
(2)字符常量:用单引号括起来的单个字符
System.out.println('A');
System.out.println('我');
(3)整数常量:所有整数
(4)小数常量:所有小数
(5)布尔常量:只有true、false
(6)空常量:Null
(二)变量
1 、变量概述:在程序运行过程中,在其作用域内可以发生改变的量。
2、变量的定义格式
数据类型 变量名=初始值;
二、进制和进制的转换
1、进制概述:就是进位制,是人们规定的一种进位方法。对于任何一种进制--X进制,就表示某一位置上的数计算时是逢X进一位。二进制就是逢二进一,八进制是逢八进一,十进制是逢十进一,十六进制是逢十六进一。
2、不同进制的表现形式
* 二进制数据:由0、1组成, 以0b开始
* 八进制数据:由0、1、2、...、7组成 ,以0开始
* 十进制数据:由0、1、2、...、9组成,整数默认是十进制数
* 十六进制数据:由0、1、2、...、9、A、B、...、F组成,以0x开始
3、进制的转换
* 任意进制到十进制之间的转换
**每一组数据 =系数*基数^权
* 十进制数据到任意进制之间的转换
**除基取余,直到商为零,余数反转
* 任意进制到任意进制之间的转换
** 一般以十进制作为桥梁,进行两次转换得到结果
** 也有一种快速转换法,即利用 8421BCD码完成转换,如下:
三、Java数据类型概述
Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间,其分类如下:
内存分配如下:
** 举例:
class DataType{
public static void main(String[] args) {
//定义变量的语法: 数据类型 变量名=初始化值 如: int num=100;
//Java中的数据类型:基本数据类型 和 引用数据类型
//Java中的基本数据类型
//1.整数型: byte short int long
byte b=1;
short s=10;
int num=100;
//整数默认是int类型
long num2=1000;//
long num3=100L;//注意定义long类型时 数值最好加上L
//byte bb=130;报错:超出了byte的范围
//2.浮点型(小数型) float double
//float 占四个字节
//double 占8个字节
//小数默认是double类型 整数默认是int类型
float f=3.14f;//注意:定义float类型,数值后面注意要加上f
double dd=3.14;
//字符型 char 占两个字节
char ch='A';
char cc='我';
//boolean 布尔型 占一个字节
boolean flag=true;
boolean flag2=false;
//基本数据类型:整型 浮点型 字符型 布尔型
** 自动类型提升:byte、short、char在参与运算时,会自动提升为int类型的数据进行运算,如果在运算过程中遇到long、float、double类型的数据,会相应的提升为long、float、double类型数据。
例1
class TextDataType
{
public static void main(String[] args)
{
byte a=1;
byte b=2;
byte c=a+b;
System.out.println(c);
}
}
解析:byte类型的数据a和b,在参与运算时会自动提升为int类型,计算结果为4个字节的数据,byte类型的c数据是不能装下该结果的。
改正:可以用强制类型转化操作,进行运算
byte c=(byte)(a+b);
结果如下:
例2
class TextDataType
{
public static void main(String[] args)
{
byte a=1;
byte b=2;
long num=2L;
float f=1.1f;
float c=a+b+num+f;
System.out.println(c);
double d=a+b+num+f;
System.out.println(d);
}
}
运行结果:
例3
class TextDataType
{
public static void main(String[] args)
{
byte a=1;
double b=1.1;
long sum=a+b;
System.out.println(sum);
}
}
运行结果:
解析:虽然long类型数据和double类型数据都是8个字节的存储单元,但是小数在内存中的存储方式和整型数据是不同的,因此double类型的数据是不能存放在long类型的变量中。同样,如果必须存放为long类型数据,则可以用强制类型转化,不过会有精度损失。
** 常量优化机制
class TextDataType
{
public static void main(String[] args)
{
byte sum;
sum=3+4;
System.out.println(sum);
}
}
在你看了上面的自动类型提升机制后,有可能会认为这段代码是错误的,我刚开始就是这样想的(ps://一般没有定义的整型常量在Java中会被默认为int类型数据,那么计算结果为int类型的数据当然不可能存放在byte类型的变量中),然而运行结果证明编译无误。这就是因为Java中的常量优化机制了。
结果如下: