目录

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等就属于弱类型语言。

所以,数据类型只有在强类型语言中才存在。

数据类型分类:

springboot 强制类型转换 java中什么是强制类型转换_System

基本数据类型有四类八种: 1. 四类:整型、浮点型、字符型以及布尔型

                                             2. 八种:

springboot 强制类型转换 java中什么是强制类型转换_数据类型_02

补充: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);

如果没有赋值,则编译会报错:

springboot 强制类型转换 java中什么是强制类型转换_数据结构_03

3.int型变量表示范围:

最大值:


Integer.MAX_VALUE


最小值:


Integer.MIN_VALUE


System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);

springboot 强制类型转换 java中什么是强制类型转换_System_04

4.在给变量设置初始值时,值不能超过int的表示范围,否则会导致溢出

int a=2147483648;
System.out.println(a);

springboot 强制类型转换 java中什么是强制类型转换_System_05

 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);

springboot 强制类型转换 java中什么是强制类型转换_System_06

 2.2.3字节型变量

1.Byte在任何系统下只占用一个字节

2.byte表示范围:-127~128

System.out.println(Byte.MAX_VALUE);
System.out.println(Byte.MIN_VALUE);

springboot 强制类型转换 java中什么是强制类型转换_springboot 强制类型转换_07

 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);

springboot 强制类型转换 java中什么是强制类型转换_数据结构_08

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的变量运算

springboot 强制类型转换 java中什么是强制类型转换_数据类型_09

 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);
    }
}

结果为:

springboot 强制类型转换 java中什么是强制类型转换_数据结构_10

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);