基本数据类型

一.基本数据类型:

1.数值型:

整数类型:byte,short,int,long

浮点类型:float,double

2.字符型: char

3.布尔型(逻辑型): boolean


二.浮点类型:就是小数,float,double


34642323.44=3.464232344  *10   ^7
              尾数         基数 指数


10001000(2)=1.0001000      *2    ^111      //111(2)=7(10)
尾数 基数   指数

    0       00000111     10001000 00000000 0000000

符号位   指数          尾数


float 32位:1位符号位,8位指数,23位尾数
double 64位:1位符号位,11位指数,52为尾数


默认的浮点数字面量:double类型
浮点类型后缀:d/D,f/F
一般只使用double计算浮点数,float基本不用
浮点数不能精确运算

double类型可以精确表达int


三.变量名,推荐使用有意义的长变量名,提高代码可读性;
如:age,index等等;
短变量名,如a,b,c等等(无意义);

四.数据类型转换

1.自动类型转换(隐式类型转换)
从小类型到大类型,自动完成
byte<short<int<long<float<double
不包括char和boolean类型;

int n='A';
float m=n; 

2.强制类型转换,从大类型到小类型需要强制转换强制类型转换有风险,会造成精度损失或者溢出,应该尽量避免使用强制类型转换。



Unicode编码,个别码是不可见的(如:换行,回车等)


package day02;

public class IntegerDemo {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		byte b = 127; // 十进制,符合byte类型范围
		b = 0127; // 八进制(0开头),转换为十进制后符合byte类型范围
		// b=0x127; //十六进制(0x开头),错误,转换为十进制后超出byte类型范围
		
		//short age=20; //Java中默认是32位,仍然要自动转化为int类型,没有任何性能上的提升
		int age=20;
		
		int size=1024*1024*1024*2; //表示2G U盘空间大小
		System.out.println(size); //-217483648
		
		//直接量(字面量/常量)
		long l=1;//直接量,默认仍然是int类型
		//l=2200000000; //错误,超过int最大范围
		l=2200000000L; //表示long类型,赋值后面必须加L
		//1存储为32位, 1L存储为64位
		
		int a=127;
		//byte bx=a; //错误,不能使用int类型给byte/short类型的"变量"直接赋值,因为其范围大
		byte bx=(byte)a; //对a进行类型转换,从而完成对bx的赋值
		bx=127; //正确,"常量"不超过范围,可以直接赋值

	
	}

}

package day02;

public class FloatDemo {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根

		int a = 0x7fffffff; //2147483647 int类型最大值
		int b = 0x7ffffff0; //2147483632

		float af = a;
		float bf = b;
		System.out.println(af); //2.14748365E9
		System.out.println(bf);//af和bf输出相同,所以float类型精度比int小(double类型可以精确表达int)

		double ca=a;
		double cb=b;
		System.out.println(ca);//2.147483647E9
		System.out.println(cb);//2.147483632E9
		
		double d=2.5; //默认为double类型
		float f=2.5F; // F/f表示为float类型
		//f=3.0;//错误,因为默认double类型,范围大
		f=3.0F;//正确
		/*
		 3:int类型 
		 3L:long类型 
		 3D:double类型 
		 3F:float类型
		 */
	}

}

package day02;
import java.util.Random;
public class CharDemo {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		int i='A';
		System.out.println(i);//65,'A'的Unicode码(兼容ASCII码,Java中为Unicode码)
		//Unicode编码采用无符号编码,可以存储65536个字符,取值范围是0~65535(0x0000-0xffff)

		int a=0x0000;
		int b=0xffff;
		System.out.println(Integer.toString(a));//0,转换为十进制
		System.out.println(Integer.toString(b));//65535
		System.out.println(Integer.toBinaryString(a));//0,转换为二进制
		System.out.println(Integer.toBinaryString(b));//1111111111111111
		//char用于存储单个字符,占用16位(2个字节)的内存空间		
		char c='中'; 
		i=c; //因为字符是一个整数,所以char类型c可以赋值给int类型i
		System.out.println(i); //20013 0x4e2d
		System.out.println(c); //中
		//结论:字符是一个数字,是字符的Unicode编码值
		//println()方法根据参数类型的不同,采用不同的输出方式,整数输出整数,字符输出字符
		
		System.out.println('B'); //B
		System.out.println((int)'B');//66
		
		int n='B'-'A'; //1
		n='B'-'A'+10; //11
		n='C'-'A'+10; //12
		n='D'-'A'+10; //13
		char ch='E';
		int num=ch-'A'+10; //14
		System.out.println(num);//14
		
		ch='5'; //字符5
		System.out.println(ch);
		num=ch-'0';//数字5,因为编码按顺序编码,所以相减得数字5
		System.out.println(num);//数字5
		num=ch;
		System.out.println(num);//53,num为int类型,字符5的Unicode编码
		System.out.println((int)'5');//53
		System.out.println((int)'0'); //'0'的编码为48
		
		char chr='A'+3;
		System.out.println(chr); //D,输出的是char类型
		
		
		Random r=new Random(); //使用前,需要调用import java.util.Random;(导入java.util包中的Random类 )
		int x=r.nextInt(26); //随机数X属于[0,26),即0~25的整数
		chr=(char)('A'+x);  // x为变量,所以需要对其运算进行类型定义
		System.out.println(chr);//A~Z的随机数
		
		char cx=0; //0
		char cy='0';//48
		//数值0和字符0不同
		
		char xx='\'';   
		System.out.println(xx); //'
		System.out.println((int)xx);//39,字符'的编码
		xx='\\';
		System.out.println(xx); // \  
		xx='\u4e2d';
		System.out.println(xx); //中   Unicode编码
		xx='\u0041';
		System.out.println(xx); //A
		xx='\u0000';
		System.out.println(xx); //空(看不到)
		System.out.println((int)xx); //0
		System.out.println(0=='\u0000'); //true
		System.out.println('0'=='\u0000'); //false
		/*
		 Unicode编码:  'A'=41,'a'=97,'0'=48
		 转义字符:
		 \' 单引号
		 \" 双引号
		 \\ 反斜杠\
		 \t 制表符Tab(将光标移到下一个制表符位置)
		 \r 回车
		 \n 换行
		 */
		System.out.println("a\tb\nc"); //相当于a+制表位b+换行c
		
		System.out.println('\n');  //空(看不到)
		System.out.println((int)'\n'); //10,换行
		System.out.println((int)'\r'); //13,回车
		
		// System.out.println("\u0000");
		// System.out.println("OK\u0000123");
		// System.out.println("OK123\u0000");
		System.out.println("\ufffe");  //?
		
		
		boolean finished=true;
		if(finished){
			System.out.println("欢迎你再来!"); //欢迎你再来!
		}
		
		int nn='A'; //65
		float m=nn; 
		System.out.println(m);//65.0,自动类型转换(隐式类型转换)
		
		long l=1024L*1024*1024*4;//0x100000000,十六进制8个0	
		System.out.println(Long.toBinaryString(l));//100000000000000000000000000000000,二进制32个0
		int ii=(int)l; //强制转换,l超出int的最大范围,(十进制下溢出2147483649,二进制下溢出最高位1)
		System.out.println(ii);//0
		System.out.println(Integer.toBinaryString(ii));//0
		
		l=1024L*1024*1024*4+1; 
		ii=(int)l; //强制转换,溢出后剩下1
		System.out.println(ii);//1

		int aa=(int)45.23; //45,精度损失
		byte bb=(byte)129; //-127,溢出2(溢出1:最小值,溢出2:最小值+1)
		int ag = 256;
		byte bg = (byte)ag;		//0,数据溢出129(256-127=129),所以-128+(129-1)=0
		System.out.println(bg);
		/*
		 数据溢出: 
		 某类型强制转换为byte类型 MAX=127  MIN=-128
		 溢出n=原来数-MAX
		 输出=(n-1)+MIN
		 
		 */
		
	}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值