Java学习-基本数据类型

基本数据类型

Java是一种强类型语言,每个变量都必须声明其数据类型。 

Java的数据类型可分为两大类:基本数据类型(primitive data type)和引用数据类型(reference data type)。

PS:巧妙记忆:除了基本数据类型以外的所有类型都属于引用数据类型,本章重点:基本数据类型

整数类型
整数类型常量

十进制整数,如:99, -500, 0

八进制整数,要求以 0 开头,如:015

十六进制数,要求 0x 或 0X 开头,如:0x15

二进制:要求0b或者0B开头,如:0b11

几进制:就是逢几进1的问题:

平时实际生活中用的最多的是:十进制

计算机用二进制最多

扩展:进制转换问题

【1】二进制转换为十进制:

二进制: 1101

    1*2^3  +   1*2^2   +  0*2^1  +     1*2^0

=    8         +      4       +     0       +      1

=  13 

【2】十进制转换为二进制:

十进制  13   

【3】八进制转换十进制:

八进制: 16

1*8^1 +   6*8^0

=   8     +  6

=14

【4】十进制转换为八进制:

十进制14:

【5】八进制转换为十六进制:

把十进制当做一个中转站:

八进制---》十进制---》十六进制

实际上根本不用自己转换这么麻烦:我们可以直接用系统中提供给我们的计算器:

整数类型变量

整型数据类型:       

比如:byte的右侧表数范围127怎么算出来的?

byte: 1字节 =  8位 

二进制:01111111

   1*2^6  + 1*2^5  +  1*2^4 + 1*2^3  + 1*2^2 +   1*2^1 +   1*2^0

= 64     +     32       +     16      +8         +4             +    2       +1

= 127

代码:

  1. public class TestVar05{
  2.         public static void main(String[] args){
  3.                 //定义整数类型的变量:
  4.                 //给变量赋值的时候,值可以为不同进制的:
  5.                 int num1 = 12 ;//默认情况下赋值就是十进制的情况
  6.                 System.out.println(num1);
  7.                 int num2 = 012;//前面加上0,这个值就是八进制的
  8.                 System.out.println(num2);
  9.                 int num3 = 0x12;//前面加上0x或者0X,这个值就是十六进制的
  10.                 System.out.println(num3);
  11.                 int num4 = 0b10;//前面加上0b或者0B,这个值就是二进制的
  12.                 System.out.println(num4);
  13.                
  14.                 //定义byte类型的变量:
  15.                 byte b = 126;//定义了一个byte类型的变量,名字叫b,赋值为12
  16.                 System.out.println(b);
  17.                 //注意:超范围的赋值会报错。
  18.                 short s = 30000;
  19.                 System.out.println(s);
  20.                 int i = 1234;
  21.                 System.out.println(i);
  22.                 //整数类型默认就是int类型的,所以12345678910是一个int类型的数,对于int类型来说,它超出范围了
  23.                 //要想把一个数给long类型变量,那么后面加上L(推荐)或者l就可以了
  24.                 long num5 = 12345678910L;
  25.                 System.out.println(num5);
  26.                 //注意:只有这个数超出int类型的范围了后面才需要加上L,否则无需加L也可以赋值给long类型:
  27.                 long num6 = 12;
  28.                 System.out.println(num6);
  29.                
  30.         }
  31. }
浮点类型
浮点类型常量

(1)十进制数形式,例如:                              

3.14       314.0      0.314

(2)科学记数法形式,如

314e2      314E2 (E的大小写没有区分)    314E-2

double  f = 314e2;  //314*10^2-->31400.0

double  f2 = 314e-2; //314*10^(-2)-->3.14

浮点类型变量

float类型又被称作单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足需求。

而double表示这种类型的数值精度约是float类型的两倍,又被称作双精度类型,绝大部分应用程序都采用double类型。

float类型的数值有一个后缀F或者f ,没有后缀F/f的浮点数值默认为double类型。

也可以在浮点数值后添加后缀D或者d, 以明确其为double类型。

PS:有效数字指的是从左开始第一个不为0的数到最后一个数

代码:

  1. public class TestVar06{
  2.         public static void main(String[] args){
  3.                 //浮点类型的常量有两种形式:
  4.                 //十进制形式:
  5.                 double num1 = 3.14;
  6.                 System.out.println(num1);
  7.                 //科学计数法形式:
  8.                 double num2 = 314E-2;
  9.                 System.out.println(num2);
  10.                 
  11.                 //浮点类型的变量:
  12.                 //注意:浮点型默认是double类型的,要想将一个double类型的数赋给float类型,必须后面加上F或者f
  13.                 float f1 = 3.14234567898623F;
  14.                 System.out.println(f1);
  15.                 //注意:double类型后面可以加D或者d,但是一般我们都省略不写
  16.                 double d1 = 3.14234567898623D;
  17.                 System.out.println(d1);
  18.                
  19.                 //注意:我们最好不要进行浮点类型的比较:
  20.                 float f2 = 0.3F;
  21.                 double d2 = 0.3;
  22.                 System.out.println(f2==d2);
  23.                 /*
  24.                 区别:
  25.                 = 赋值运算:  将等号右侧的值赋给等号左侧
  26.                 == 判断==左右两侧的值是否相等  :结果要么相等 要么不相等
  27.                 ==运算符的结果就是要么是true,要么是false
  28.                 */
  29.                
  30.         }
  31. }
字符类型

【1】Java中使用单引号来表示字符常量,字符型在内存中占2个字节。

char 类型用来表示在Unicode编码表中的字符。Unicode编码被设计用来处理各种语言的文字,它占2个字节,可允许有65536个字符。

【2】转义字符:

【3】ASCII表:

【4】Unicode编码表:

https://www.cnblogs.com/csguo/p/7401874.html

代码1:

  1. public class TestVar07{
  2.         public static void main(String[] args){
  3.                 //定义字符类型的变量:
  4.                 char ch1 = 'a';
  5.                 System.out.println(ch1);
  6.                 char ch2 = 'A';
  7.                 System.out.println(ch2);
  8.                 char ch3 = '4';
  9.                 System.out.println(ch3);
  10.                 char ch4 = '中';
  11.                 System.out.println(ch4);
  12.                 char ch5 = '?';
  13.                 System.out.println(ch5);
  14.                 //java中无论:字母,数字,符号,中文都是字符类型的常量,都占用2个字节。
  15.                 char ch6 = ' ';
  16.                 System.out.println(ch6);
  17.                 //字符类型:单引号引起来的单个字符
  18.                 System.out.println("--------------------------------");
  19.                 /*
  20.                 转义字符:
  21.                 \将后面的普通字符转换为特殊含义
  22.                 */
  23.                 char ch7 = '\n';
  24.                 System.out.println("aaa"+ch7+"bbb");
  25.                
  26.                 System.out.println("aaa\nbbb");// \n  换行
  27.                
  28.                 System.out.println("aaaaaaa\tbbb");  //  \t  制表符
  29.                
  30.                 System.out.println("aaa\bbbb");//aabbb  \b  向前退一格
  31.                 System.out.println("aaa\rbbb");//bbb   \r 将光标到本行开头 :回车
  32.                
  33.                 System.out.println("\"java\""); // \" 将双引号原样输出  \' 将单引号原样输出 \\ 将\原样输出
  34.         }
  35. }

代码2:

  1. public class TestVar08{
  2.         public static void main(String[] args){
  3.                 char ch1 = 'A';
  4.                 System.out.println(ch1);//A
  5.                 System.out.println(ch1+90);//155
  6.                 System.out.println(155-ch1);//90
  7.                 //char类型我们看到的样子就是它本身的字面常量,但是底层在进行计算的时候,实际上是按照一个码进行计算的。
  8.                 //这个码就是ASCII
  9.                 //之前说char类型是按照Unicode码表进行存储的 (Unicode兼容了ASCII码,Unicode的前128位置ASCII)
  10.                
  11.                 char ch2 = '中';
  12.                 System.out.println(ch2);// 中
  13.                 System.out.println(ch2+90);// 20103
  14.                 System.out.println(20103-ch2);// 90
  15.                
  16.                 //转换:
  17.                 int num1 = (int)ch2;
  18.                 System.out.println(num1);//20013
  19.                
  20.                 char ch = (char)20013;
  21.                 System.out.println(ch);
  22.                
  23.                 int num2 = '中';
  24.                 char ch5 = 20013;
  25.                 System.out.println(ch5);
  26.                
  27.                 //面试题:
  28.                 char ch6 = '2'+2;
  29.                 System.out.println(ch6);//'4'--->4
  30.         }
  31. }
布尔类型

boolean类型有两个常量值,true和false,在内存中占一位(不是一个字节),不可以使用 0 或非 0 的整数替代 true 和 false ,这点和C语言不同。 boolean 类型用来判断逻辑条件,一般用于程序流程控制 。

  1. public class TestVar09{
  2.         public static void main(String[] args){
  3.                 //创建一个布尔类型的变量:
  4.                 boolean flag1 = true;
  5.                 System.out.println(flag1);
  6.                 boolean flag2 = false;
  7.                 System.out.println(flag2);
  8.                 boolean flag3 = 5==9;
  9.                 System.out.println(flag3);
  10.                 boolean flag4 = 5<9;
  11.                 System.out.println(flag4);
  12.         }
  13. }

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值