zl程序教程

您现在的位置是:首页 >  后端

当前栏目

传智播客Java常量进制转换数据类型

JAVA转换 数据类型 常量 进制 传智播
2023-09-27 14:25:49 时间

目录

常量

不同进制转换

数据类型

使用变量注意事项


 

常量

l常量概述

在程序执行的过程中其值不可以发生改变

lJava中常量分类

字面值常量

自定义常量(面向对象部分讲)

/*
	常量:
		在程序执行过程中,其值不发生改变的量。
		
	分类:
		A:字面值常量
		B:自定义常量(后面讲)
		
	字面值常量
		A:字符串常量	用双引号括起来的内容。
			举例:"hello","world","HelloWorld"
		B:整数常量	所有的整数
			举例:100,200
		C:小数常量	所有的小数
			举例:10.23,110.11
		D:字符常量	用单引号括起来的内容
			举例:'a','A','0'
			错误的:'ab'
		E:布尔常量	比较特殊
			举例:true,false
		F:空常量	后面讲
			举例:null
*/
class ConstantDemo {
	public static void main(String[] args) {
		//字符串常量的输出
		System.out.println("hello");
		
		//整数常量的输出
		System.out.println(100);
		
		//小数常量的输出
		System.out.println(100.10);
		
		//字符常量的输出
		System.out.println('a');
		System.out.println('A');
		System.out.println('0');
		//这个是有问题的
		//System.out.println('ab');
		
		//布尔常量的输出
		System.out.println(true);
		System.out.println(false);
	}
}

不同进制转换



public class JavaLearn {

    public static void main(String[] args)
    {
        System.out.print("It is not what is outside, " +
                "but what is inside that counts.\n");
        System.out.println(100); //十进制
        System.out.println(0b100); //二进制
        System.out.println(0100); //八进制
        System.out.println(0x100); //十六进制

    }

}

 

1:得到下面数据的十进制值:
0b10101
    =1*2^4 + 1*2^2 + 1*2^0
    =16 + 4 + 1
    =21

0123
    =1*8^2 + 2*8^1 + 3*8^0
    =64 + 16 + 3
    =83
0x3c
    =3*16^1 + c*16^0
    =48 + 12
    =60
    
2:得到下面数据的二进制,十进制,十六进制
52分别得到二进制,十进制,十六进制

得到二进制:
    52 / 2 = 26        0
    26 / 2 = 13        0
    13 / 2 = 6      1
    6  / 2 = 3      0
    3  / 2 = 1      1
    1  / 2 = 0      1
    
    0b110100
    
得到八进制:
    52 / 8 = 6        4
    6  / 8 = 0      6
    
    064
    
得到十六进制:
    52 / 16 = 3        4
    3  / 16 = 0     3
    
    0x34
    
3:有符号数据表示法的练习
    A:已知某数X的原码为10110100B,试求X的补码和反码。
        
            符号位        数值位
        
    原码:    1            0110100
    
    反码:    1            1001011
    
    补码:    1            1001100
    
    B:已知某数X的补码11101110B,试求其原码。
    
            符号位        数值位
            
    补码:    1            1101110
    
    反码:    1            1101101
    
    原码:    1            0010010
    
 

 

数据类型

 

Java 各整数类型有固定的表数范围和字段长度,其不受具体操作系统的影响,以保证Java程序的可移植性。

Java语言的整型常量默认为int型,声明long型常量可以后加‘ l ’或‘ L ’ ,如:

       int i1 = 600; //正确     long l1 = 88888888888L; //必须加l否则会出错

 

与整数类型类似,Java浮点类型有固定的表数范围和字段长度,不受平台影响。

Java 浮点类型常量有两种表示形式

      十进制数形式,如: 3.14       314.0

科学记数法形式,如 3.14e2 3.14*10^2

Java 浮点型常量默认为 double 型,如要声明一个常量为 float 型,则需在数字后面加 f F ,如:

double d = 12345.6; //正确   float f = 12.3f; //必须加f否则会出错

 

char 型数据用来表示通常意义上的“字符”

字符常量为用单引号括起来的单个字符,例如:char ch1= 'a'; char ch2='';

Java 字符采用 Unicode 编码,每个字符占两个字节,因而可用十六进制编码形式表示。注:Unicode是全球语言统一编码

 

boolean 类型适于逻辑运算,一般用于程序流程控制 。

boolean 类型数据只允许取值 true false ,不可以 0 或非 0 的整数替代 true false ,这点和C语言不同。

/*
	数据类型:Java是一种强类型的语言,针对每一种数据都定义了明确的数据类型。
	
	数据类型分类:
		A:基本数据类型
		B:引用数据类型(类,接口,数值)
		
	基本数据类型:4类8种
		A:整数			占用字节数
			byte			1
			short			2
			int				4
			long			8
			
		B:浮点数
			float 			4
			double 			8
			
		C:字符
			char			2
		D:布尔
			boolean			1
		
		注意:
			整数默认是int类型
			浮点数默认是double类型。
			
			长整型后缀用L或者l标记。建议使用L。
			单精度浮点数用F或者f标记。建议使用F。
*/
class DataTypeDemo {
	public static void main(String[] args) {
		//定义变量的格式:
		//数据类型 变量名 = 初始化值;
		
		//定义一个字节变量
		byte b = 10;
		System.out.println(10);
		System.out.println(b);
		
		//定义一个短整型变量
		short s = 100;
		System.out.println(s);
		
		//定义一个整型变量
		int i = 1000;
		System.out.println(i);
		
		//超过了int的范围
		//int j = 1000000000000;
		long j = 1000000000000L;
		//long j = 100L;
		System.out.println(j);
		
		//定义浮点数据变量
		float f = 12.345F;
		System.out.println(f);
		
		double d = 12.345;
		System.out.println(d);
		
		//定义字符变量
		char ch = 'a';
		System.out.println(ch);
		
		//定义布尔变量
		boolean flag = true;
		System.out.println(flag);
	}
}

 

使用变量注意事项

 

 

/*
	使用变量的时候要注意的问题:
		A:作用域
			变量定义在哪个大括号内,它就在这个大括号内有效。
			并且,在同一个大括号内不能同时定义同名的变量。
			
		B:初始化值
			没有初始化值的变量不能直接使用。
			你只要在使用前给值就行,不一定非要在定义的时候立即给值。
			推荐在定义的时候给值。
			
			定义变量的格式:
				a:数据类型 变量名 = 初始化值;
				b:数据类型 变量名;
				  变量名 = 初始化值;
		
		C:在一行上建议只定义一个变量
			可以定义多个,但是不建议
*/
class DataTypeDemo2 {
	public static void main(String[] args) {
		//定义变量
		int x = 100;
		
		//错误,不能有同名的
		//int x = 200;
		
		//定义变量必须给值
		//int y;
		//System.out.println(y);
		
		int z;
		z = 100;
		System.out.println(z);
		
		//在一行上定义多个变量
		//int a = 10; int b = 20; int c  = 30;
		//上面的写法可以,但是不建议。
		int a = 10; 
		int b = 20; 
		int c  = 30;
		
		//int d, e;
		//d = 40;
		//e = 50;
		
		//int f,int g; //错误
		//int h; int i; //正确
	}
}
/*
	+是一个运算符(我们等会讲解)。做加法运算的。
	
	一般来说,我们在运算的时候,要求参与运算的数据类型必须一致。
	
	注意:
		boolean类型不能转换为其他的数据类型

	默认转换(从小到大的转换)
		A:byte,short,char—int—long—float—double
		B:byte,short,char相互之间不转换,他们参与运算首先转换为int类型
*/
class DataTypeDemo3 {
	public static void main(String[] args) {
		//直接输出的方式做加法
		//System.out.println(3 + 4);
	
		//两个int类型做加法
		int x = 3;
		int y = 4;
		int z = x + y;
		System.out.println(z);
		
		//定义一个byte类型,一个int类型,做加法
		byte a = 3;
		int b = 4;
		System.out.println(a + b);
		
		//可能损失精度
		//byte c =  a + b;
		int c = a + b;
		System.out.println(c);
	}
}

 

		byte a = 3;
		int b = 4;
		
		//这个肯定没有问题
		//int c = a + b;
		
		//byte c = 7;
		//这个是有问题的
		//byte c = a + b; 
		//用强制类型转换改进
		byte c = (byte) (a + b);
		System.out.println(c);

 

/*
	思考题1:请问下面这个有没有问题
		double d = 12.345;
		float f = d;
		
	思考题2:看看下面两个定义有没有区别呢?
		float f1 = (float)12.345;
		float f2 = 12.345f;
		
		f1其实是通过一个double类型转换过来的。
		而f2本身就是一个float类型。
*/
class DataTypeDemo5 {
	public static void main(String[] args) {
		//把double赋值给float,加了强制类型转换
		double d = 12.345;
		float f = (float)d;
		
		//看看下面两个定义有没有区别呢?
		float f1 = (float)12.345;
		float f2 = 12.345F;
	}
}
/*
	byte b = 130;有没有问题?如果我想让赋值正确,可以怎么做?结果是多少呢?
	
	练习:byte b = (byte)300;
*/
class DataTypeDemo7 {
	public static void main(String[] args) {
		//因为byte的范围是:-128到127。
		//而130不在此范围内,所以报错。
		//byte b = 130; 
		
		//我们可以使用强制类型转换
		byte b = (byte) 130;
		
		//结果是多少呢?
		System.out.println(b);
	}
}
/*
	分析过程:
		我们要想知道结果是什么,就应该知道是如何进行计算的。
		而我们又知道计算机中数据的运算都是补码进行的。
		而要得到补码,首先要计算出数据的二进制。
		
		A:获取130这个数据的二进制。
			00000000 00000000 00000000 10000010
			这是130的原码,也是反码,还是补码。
		B:做截取操作,截成byte类型的了。
			10000010 
			这个结果是补码。
		C:已知补码求原码。
					符号位		数值位
			补码:	1			0000010
			
			反码:	1			0000001
			
			原码:	1			1111110
*/

 

/*
	看程序写结果
	
	通过字符和一个整数相加,我们给出一张表:ASCII码表。
		通过看完这张表以后,我们要记住三个值:
			'a'		97
			'A'		65
			'0'		48
*/
class DataTypeDemo8 {
	public static void main(String[] args) {
		//直接输出一个字符
		System.out.println('a'); //a
		//输出一个字符和一个整数做加法
		System.out.println('a'+1); //98
	}
}
/*
	看程序写结果
		字符串数据和其他数据做+,结果是字符串类型。
		这里的+不是加法运算,而是字符串连接符。
*/
class DataTypeDemo9 {
	public static void main(String[] args) {
		System.out.println("hello"+'a'+1); //helloa1
		System.out.println('a'+1+"hello"); //98hello
		
		System.out.println("5+5="+5+5); //5+5=55
		System.out.println(5+5+"=5+5"); //10=5+5
	}
}