第二节 数据类型与常量和变量(介绍顺序自上至下,自左至右)
一、数据类型的分类
数据类型可总体分为两类,基本数据类型和引用数据类型
1、基本类型:
分为字符型(char,2字节)
布尔型(只有两个值,不能与int转换,真为true,假为false)
数值型(共六个)可详细分为整型和浮点型,整型(byte<short<int<long,大小分别为1,2,4,8个字节),默认整型字面量为int;浮点型(float<double 4和8字节),默认字面量都是double
二、八大基本类型介绍及进制转换
1、整型变量:
int:4字节,与操作系统和JVM版本都无关,int a = 10;声明变量,int型,初始化变量a的值为10,在Java中变量在定义时推荐赋予初始化值,因为在方法中定义的变量是局部变量,必须赋值后才能使用。
2、进制转换:
1byte = 8 bit
什么是bit?如10转换为二进制为1010,代表4bit,
一般来说数据基本单位是byte(字节),byte与后续单位进制是1024, 8 bit就表示能写8个二进制数,最大为11111111,最多能表示2^8 - 1=255个二进制数,如何计算?从2^0乘1一直加到2^7乘1=255(不讨论符号位)
区分:int类型求表示的范围(要考虑符号位),4字节,32个bit位,可表示为2^0-31次方,其中首位为符号位,所以从2^0乘1一直加到2^30乘1,结果就是2^31-1,可表示的范围就是从-2^31---2^31-1
3、关于包装类
八大基本类型中,只有int和char类型的包装类拼写较为特殊,其他的包装类都是首字母大写即可,int----Integer char---Character
4、int类型的溢出问题
public class TestDemo { public static void main(String[] args) { System.out.println(Integer.MAX_VALUE); System.out.println(Integer.MIN_VALUE); long a = Integer.MAX_VALUE; //整型溢出,a的结果变成最小值,向前进一从0111111……变为1000000,变成-2的31次方,需要更换一个更大的数据类型,所以需要long类型来进行接收 a = a + 1; System.out.println(a); } }
5、long类型和字面量:
long类型后面要加L
字面量:如200,整型字面量,默认为int类型;'a'字符字面量;90.5浮点数字面量,默认类型为double型
6、double类型
8字节,双精度浮点数,Java中直接写出来的小数就是double类型,整型/整型会忽略小数部分导致精度丢失,可以改为1.0/2.0,两个浮点数相乘,由于计算机内部存储着一大堆0和1,浮点数在计算机内部实际上视通过整数模拟的,所以有时候会出现1.21000000000302这种情况,一般两种解决方法:(1)仍然使用double,但我们一般只看小数点后六位,剩下的小数忽略不计 (2) 使用BigDecimal来代替double的使用
7、其他基本数据类型:
float:4字节,单精度浮点数,要在末尾加F
char:字符型,2字节,使用''括起来的值都是字符字面量,默认类型是char
byte:1字节,一般用于文件和网络传输中[-128--127] 即[-2^7--2^7-1]
short:基本不用
布尔型:真为true,假为false,与0和1没有任何关系,不能和其他类型进行转换
布尔类型需注意:(1)不能和int进行转换
boolean a = true; a = 1;//编译时会提示,不兼容类型:int无法转换为boolean System.out.println(a);
(2)不能和String类进行转换,但可以使用String对象+boolean进行拼接输出
boolean a = true; String ret = "运行结果是:"+ a; System.out.println(ret);//输出 运行结果是:true
三、字符串类型和转义字符:
1、字符串类型和转义字符:
String name = "我的名字是:\"明哥\""; System.out.println(name); // \用于转义,上述代码输出结果为:我的名字是:"明哥"
2、 \t:
String test = "\t有制表符的字符串";
System.out.println(test);
\t是水平制表符,作用类似tab键
3、字符串的拼接作用:
int d = 10;
int e = 20;
System.out.println("d ="+ d +",e =" + e );
字符串中加号有拼接作用,输出结果为d=10,e=20
四、变量和常量
1、变量和变量作用域:
变量作用域:指变量起作用的区域在哪儿,就看变量在哪个大括号中定义的
变量:Java是强类型语言,定义一个变量的时候必须要规定好她的类型
2、变量的命名规则:
硬性规则:(1)必须由数字、字母、下划线组成
(2)数字不能开头
(3)变量名大小写是很敏感的
(4)不能使用关键字作为变量名,关键字有哪些,可在word中看原图
软性规则:见名知意,变量名最好不要用拼音,变量名词性为名词,变量命名使用小驼峰命名法:如String studentName = "明哥";
3、常量:
程序中有些属性,定义之后值无法修改,定义常量使用final关键字,示例如下:
final int c = 10;
System.out.println(c);
因为c被定义为常量,所以就无法修改值了,输出结果为10