从零开始的Java笔记——基本数据类型

从零开始的Java笔记(day4——基本数据类型)

说明:本文章的day天数并非博主按照实际操作天数进行创作,而是根据内容多少进行分类。为提高效率,可能存在一天创作多篇文章的可能性,希望阅读者不要过多计较,如果本系列文章对您有所帮助,那将会是我的荣幸!

本次笔记的重点

  • 基本数据类型
    • 整数类型
      • 整数类型常量
      • 进制转换问题
      • 整数类型变量
    • 浮点类型
      • 浮点类型常量
      • 浮点类型变量
    • 字符类型
      • 转义字符
      • ASCII表
    • 布尔(boolean)类型
  • 基本数据类型的转换
  • 练习:final,字符常量,Scanner的使用

基本数据类型

Java的数据类型可分为两大类:基本数据类型(primitive data type)和引用数据类型(reference data type)。
从零开始的Java笔记——基本数据类型_第1张图片PS:除了基本数据类型以外的所有类型都属于引用数据类型(本次主要说明基础数据类型)

整数类型

整数类型常量

从零开始的Java笔记——基本数据类型_第2张图片
十进制整数,如:99, -500, 0
八进制整数,要求以 0 开头,如:015
十六进制数,要求 0x 或 0X 开头,如:0x15
二进制:要求0b或者0B开头,如:0b11

进制转换问题

  1. 二进制转换为十进制:例如:二进制数【1101】——>十进制数【?】
    1×2^3 + 1×2^2 + 0×2^1 + 1×2^0
    = 8 + 4 + 0 + 1
    = 13
  2. 十进制转换为二进制:例如:十进制数【13】——>二进制数【?】
    从零开始的Java笔记——基本数据类型_第3张图片
  3. 八进制转换十进制:例如:八进制数【16】——>十进制数【?】
    1×8^1 + 6×8^0
    = 8 + 6
    =14
  4. 八进制转换为十六进制:
    方法:八进制——>十进制(中间过渡)——>十六进制
  5. 利用计算机自带科学计算器从零开始的Java笔记——基本数据类型_第4张图片

整数类型变量

整型数据类型:byte、short、int、long
从零开始的Java笔记——基本数据类型_第5张图片
提问:范围是怎么算出来的?
比如:byte的右侧表数范围127怎么算出来的?
byte: 1字节 = 8位
二进制:01111111
12^6 + 12^5 + 12^4 + 12^3 + 12^2 + 12^1 + 1*2^0
= 64 + 32 + 16 +8 +4 + 2 +1
= 127

浮点类型

浮点类型常量

  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

浮点类型变量

在这里插入图片描述浮点型默认是double类型的,要想将一个double类型的数赋给float类型,必须后面加上F或者f。(原因:float类型的精度仅可精确到7位有效数字,在多数情况下,很难满足需求)

	//浮点类型的变量:
	//注意:浮点型默认是double类型的,要想将一个double类型的数赋给float类型,必须后面加上F或者f
	float f1 = 3.14234567898623F;
	System.out.println(f1);
	//注意:double类型后面可以加D或者d,但是一般我们都省略不写
	double d1 = 3.14234567898623D;
	System.out.println(d1);

注:不推荐浮点类型的数据进行比较,会存在舍入误差,即最好不要使用==判断符

字符类型

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

转义字符

简言之就是使用""将后面的普通字符进行连携,使其转换为特殊含义
从零开始的Java笔记——基本数据类型_第6张图片

				System.out.println("aaa\nbbb");// \n  换行
                
                System.out.println("aaaaaaa\tbbb");  //  \t  制表符
                
                System.out.println("aaa\bbbb");//aabbb  \b  向前退一格
                System.out.println("aaa\rbbb");//bbb   \r 将光标到本行开头 :回车
                
                System.out.println("\"java\""); // \" 将双引号原样输出  \' 将单引号原样输出 \\ 将\原样输出

ASCII表

布尔(boolean)类型

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

基本数据类型的转换

  • 类型转换:在赋值运算或者算数运算的时候,要求数据类型一致,就要进行类型的转换。
  • 类型转换的种类:自动转换,强制转换
public class TestVar10{
        public static void main(String[] args){
                //类型转换的两种形式:
                double d = 6;//int-->double  自动类型转换
                System.out.println(d);
                int i = (int)6.5;//double--->int  强制类型转换 (强转)
                System.out.println(i);
                
                //在同一个表达式中,有多个数据类型的时候,应该如何处理:
                //多种数据类型参与运算的时候,整数类型,浮点类型,字符类型都可以参与运算,唯独布尔类型不可以参与运算。
                //double d2 = 12+1294L+8.5F+3.81+'a'+true;
                double d2 = 12+1294L+8.5F+3.81+'a';
                System.out.println(d2);
                /*
                类型级别:(从低到高的)
                byte,short,char-->int--->long--->float--->double
                级别用来做什么?当一个表达式中有多种数据类型的时候,要找出当前表达式中级别最高的那个类型,然后
                其余的类型都转换为当前表达式中级别最高的类型进行计算。
                double d2 = 12+1294L+8.5F+3.81+'a';
                          = 12.0+1294.0+8.5+3.81+97.0
                */
                int i2 = (int)(12+1294L+8.5F+3.81+'a');
                System.out.println(i2);
                /*
                在进行运算的时候:
                左=右  : 直接赋值
                左<右  :强转
                左>右  :直接自动转换
                */
                
                //以下情况属于特殊情形:对于byte,short,char类型来说,只要在他们的表数范围中,赋值的时候就不需要进行
                //强转了直接赋值即可。
                byte b = 12;
                System.out.println(b);
                byte b2 = (byte)270;
                System.out.println(b2);          
                
                
        }
}

练习:final,字符常量,Scanner的使用

练习:实现功能:求圆的周长和面积
【1】提取变量:提取变量,就是为了一劳永逸,以后只要改变变量的值,下面只要用到这个变量的地方,取值也都发生变化了
【2】一个变量被final修饰,这个变量就变成了一个常量,这个常量的值就不可变了
这个常量就是我们所说的 字符常量 —》pi
【3】使用扫描器:Scanner的使用–》注意通过形象的理解去使用

import java.util.Scanner;//形象理解:在java.util下将Scanner拿过来用
public class TestVar11{
        public static void main(String[] args){
                //实现功能:求圆的周长和面积
                final double PI = 3.14;
                //拿来一个扫描器:
                Scanner sc = new Scanner(System.in);
                //给一个友好性的提示:
                System.out.print("请录入一个半径:");
                //让扫描器扫描键盘录入的int类型的数据:
                int r = sc.nextInt();
                
                //求周长:
                double c = 2*PI*r;
                System.out.println("周长为:"+c);
                
                //求面积:
                //PI = 9.29;报错:TestVar11.java:12: 错误: 无法为最终变量pi分配值
                double s = PI*r*r;
                System.out.println("面积为:"+s);   
        }
}

你可能感兴趣的