目录
1.数据类型
2.常量和变量
2.1常量
2.2变量
2.2.1整形变量
2.2.2长整型变量
2.2.3字节型变量
2.2.4浮点型变量
2.2.5字符型变量
2.2.6布尔型变量
3.类型转换
3.1隐式提升(小类型->大类型)
3.2强制类型转换(显示)
3.3小于4字节的类型转换
1.数据类型
强类型语言也称为强类型定义语言。是一种总是强制类型定义的语言,要求变量的使用要严格符合定义,所有变量都必须先定义后使用。java、.NET、C/C++等都是强制类型定义的。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。
与其相对应的是弱类型语言:数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。像vb,php,JavaScript等就属于弱类型语言。
所以,数据类型只有在强类型语言中才存在。
数据类型分类:
基本数据类型有四类八种: 1. 四类:整型、浮点型、字符型以及布尔型
2. 八种:
补充:1.string字符串是类引用数据类型。
2.8大基本类型所对应的包装类:
int->Integer
char->character
其它都是首字母大写,例:long->Long
2.常量和变量
小驼峰式命名法(lower camel case): 除第一个单词之外,其他单词首字母大写。例如:int myStudentCount
大驼峰式命名法(upper camel case): 每一个单词的首字母都采用大写字母,例如:MyName
2.1常量
常量:一旦定义后无法修改的值成为常量。
字面常量:直接写出来的值称为字面常量。
Java常量的命名规则有:
1、常量名需要全部大写,这样浏览时就可以轻松找到程序中的常量并进行检查或者修改。
2、命名时,名称只能够使用数字、字母、下划线等符号组成,不能够使用图形或者其他特殊符号。
3、为了避免程序之间出现错误,我们在命名的时候,不能够使用数字作为一个名称的开头。
4、同时为了避免Java程序误判,我们在命名时,名称需要避开关键词,否则系统可能将名称读取成对应的命令并运行,也不方便后期进行程序阅读。
5、常量的名称最好可以体现出常量本身的作用,但是不允许名称中出现汉字,或者拼音。
2.2变量
变量:对于一些经常改变的内容,在Java程序中,称为变量。而数据类型就是用来定义不同种类变量的。
定义变量的语法格式为:
数据类型 变量名 = 初始值;
比如:
int a=10;
double b=5.20;
char c='A';
boolean d=true;
2.2.1整形变量
1.在定义时给出初始值
int a=10;
System.out.println(a);
2.在定义时没有设置初始值,使用前必须设置初值
int b;
b=20;
System.out.println(b);
如果没有赋值,则编译会报错:
3.int型变量表示范围:
最大值:
Integer.MAX_VALUE
最小值:
Integer.MIN_VALUE
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
4.在给变量设置初始值时,值不能超过int的表示范围,否则会导致溢出
int a=2147483648;
System.out.println(a);
2.2.2长整型变量
1.long定义的长整型变量:
Long a=10;
2. 为了区分int和long类型,一般建议:long类型变量的初始值之后加L(推荐)或者l
int a=10;
long b=10L;
3.长整型表示范围:
System.Out.println(Long.MIN_VALUE);
System.Out.println(Long.MAX_VALUE);
2.2.3字节型变量
1.Byte在任何系统下只占用一个字节
2.byte表示范围:-127~128
System.out.println(Byte.MAX_VALUE);
System.out.println(Byte.MIN_VALUE);
2.2.4浮点型变量
1.字面量默认为double。
2.float和double都遵守 IEEE 754 标准。
3.float可以精确到小数点后6位,double可以精确到小数点后12位。
4.声明float型变量,需要在小数点后加f/F
float a=3.14f;
2.2.5字符型变量
1.Java中字符可以存放为多种形式:
char a='A';//字母
char b='1';//数字
char c='嗨';//汉字
2.注意:
①. Java 中使用“ 单引号 + 单个字母” 的形式表示字符字面值。
②. 计算机中的字符本质上是一个整数. 在 C 语言中使用 ASCII 表示字符, 而 Java 中使用 Unicode 表示字符. 因此 一个字符占用两个字节, 表示的字符种类更多, 包括中文。
2.2.6布尔型变量
1.boolean 类型的变量只有两种取值, true 表示真, false 表示假。
boolean b = true;
System.out.println(b);
b = false;
System.out.println(b);
2. Java 的 boolean 类型和 int 不能相互转换, 不存在 1 表示 true, 0 表示 false 这样的用法。
3.类型转换
3.1隐式提升(小类型->大类型)
代码不需要经过任何处理,在代码编译时,编译器会自动进行处理。特点:数据范围小的转为数 据范围大的时会自动进行。
①直接赋值
int a=10;
long b=100L;
b=a;
a和b都是整形,a的范围小,b的范围大,当将a赋值给b时,编译器会自动将a提升为long类型,然后赋值。
②进行数学运算
int a=1;
double b=2.0;
double c=a+b;//加
double d=b-a;//减
double e=a*b;//乘
double f=b/a;//除
double g=b%a;//取余
a为整型,b为双精度浮点型,a的范围小,b的范围大,编译器会将a先提升为double型,再进行计算。
3.2强制类型转换(显示)
当进行操作时,代码需要经过一定的格式处理,不能自动完成。特点:数据范围大的到数据范围小 的。
public class Home1 {
public static void main(String[] args) {
int a=10;
long b=100L;
b=a;//int-->long,数据范围由小到大,隐式转换
a=(int)b;// long-->int, 数据范围由大到小,需要强转,否则编译失败
float f = 3.14F;
double d = 5.12;
d = f; // float-->double,数据范围由小到大,隐式转换
f = (float)d; // double-->float, 数据范围由大到小,需要强转,否则编译失败
a = d; // 报错,类型不兼容
a = (int)d; // int没有double表示的数据范围大,需要强转,小数点之后全部丢弃
}
}
注意:
1.如果需要把范围大的类型赋值给范围小的, 需要强制类型转换, 但是可能精度丢失。
2.两个数据类型有关系才能互相转换。
3.3小于4字节的类型转换
CPU在内存中进行数据读写时,默认都是按照4字节读写数据的,byte,short,char这种低于4字节的类型,在最终参与读写运算时会提升为int型再计算。
①int<->byte
1.若字面量数值在Byte范围中,可直接赋值
byte a=125;//int->byte,大类型->小类型
超出范围需要强转
byte b=(byte)129;//129超出了byte范围,需要强转
2.当把一个int型变量赋值给byte时,无论变量是否在byte范围中,都需要强转
int a=10;
byte b=(byte)a;
3.byte->int自动提升
byte a=10;
int b=a;
4.byte的变量运算
byte=int+int 需要类型转换
修改如下:
final byte a=10;
final byte b=20;
byte c=a+b;
final修饰的变量,值和类型都不变。
②char<->int
1.char->int 按编码规则自动转换
public class Home1 {
public static void main(String[] args) {
char a='A';
char b='1';
char c='嗨';
int h1=a;
int h2=b;
int h3=c;
System.out.println(h1);
System.out.println(h2);
System.out.println(h3);
}
}
结果为:
2.int->char int数值必须在char范围内[0,65535]才有对应字符。
③string<->int
1.int->string 使用“+”进行拼接
int a=10;
string str=a+"";
2.任意类型->string 使用valueOf方法
int a=10;
string str=String.valueOf(a);
3.string->int 调用Integer.parselnt(str)方法,str只能由数字组成。
string str="3";
int a=Integer.parselnt(str);