从零开始的Java笔记(day4——基本数据类型)
说明:本文章的day天数并非博主按照实际操作天数进行创作,而是根据内容多少进行分类。为提高效率,可能存在一天创作多篇文章的可能性,希望阅读者不要过多计较,如果本系列文章对您有所帮助,那将会是我的荣幸!
Java的数据类型可分为两大类:基本数据类型(primitive data type)和引用数据类型(reference data type)。
PS:除了基本数据类型以外的所有类型都属于引用数据类型(本次主要说明基础数据类型)
十进制整数,如:99, -500, 0
八进制整数,要求以 0 开头,如:015
十六进制数,要求 0x 或 0X 开头,如:0x15
二进制:要求0b或者0B开头,如:0b11
整型数据类型:byte、short、int、long
提问:范围是怎么算出来的?
比如: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
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个字符。
简言之就是使用""将后面的普通字符进行连携,使其转换为特殊含义
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\""); // \" 将双引号原样输出 \' 将单引号原样输出 \\ 将\原样输出
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);
}
}
练习:实现功能:求圆的周长和面积
【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);
}
}