黑马程序员:【Java基础】之变量的类型转换(6)
- 格式:doc
- 大小:121.00 KB
- 文档页数:2
java⼊门---基本数据类型之引⽤数据类型数据类型转换接着上⼀篇⽂章来,这次就先看看什么是引⽤数据类型?⾸先得满⾜以下条件:在Java中,引⽤类型的变量⾮常类似于C/C++的指针。
引⽤类型指向⼀个对象,指向对象的变量是引⽤变量。
这些变量在声明时被指定为⼀个特定的类型,⽐如 Employee、Puppy 等。
变量⼀旦声明后,类型就不能被改变了。
对象、数组都是引⽤数据类型。
所有引⽤类型的默认值都是null。
⼀个引⽤变量可以⽤来引⽤任何与之兼容的类型。
例⼦:Site site = new Site("Runoob")。
我们来看下java常量。
常量在程序运⾏时是不能被修改的。
在 Java 中使⽤ final 关键字来修饰常量,声明⽅式和变量类似:final double PI = 3.1415927;虽然常量名也可以⽤⼩写,但为了便于识别,通常使⽤⼤写字母表⽰常量。
字⾯量可以赋给任何内置类型的变量。
例如:byte a = 68;char a = 'A'byte、int、long、和short都可以⽤⼗进制、16进制以及8进制的⽅式来表⽰。
当使⽤常量的时候,前缀 0 表⽰ 8 进制,⽽前缀 0x 代表 16进制, 例如:int decimal = 100;int octal = 0144;int hexa = 0x64;和其他语⾔⼀样,Java的字符串常量也是包含在两个引号之间的字符序列。
下⾯是字符串型字⾯量的例⼦:"Hello World""two\nlines""\"This is in quotes\""字符串常量和字符常量都可以包含任何Unicode字符。
例如:char a = '\u0001';String a = "\u0001";Java语⾔⽀持⼀些特殊的转义字符序列:符号字符含义\n换⾏ (0x0a)\r回车 (0x0d)\f换页符(0x0c)\b退格 (0x08)\0空字符 (0x20)\s字符串\t制表符\"双引号\'单引号\\反斜杠\ddd⼋进制字符 (ddd)\uxxxx16进制Unicode字符 (xxxx)然后我们来看下⾃动类型转换。
Java数据类型的类型转换## 类型转换由于Java是强类型语⾔,所以要进⾏有些运算的时候,需要⽤到类型转换。
常量、字符串等是可以混合运算的,char本质还是⼀个数字低→→→→→→→→→→→→→→→→→→→→→→→→→→⾼byte,short,char-----int-----long-----float-------double*** 运算中,不同类型的数据先转化为同⼀类型,然后进⾏运算。
*** 强制类型转换(⾼到低需要强制转换)* ⾃动类型转换(低到⾼就不需要强制转换)```javapublic class Demo02 {public static void main(String[] args) {int i=128;byte b=(byte)i;//内存溢出,byte的最⼤值是127,这个时候就导致内存溢出。
//在赋值前⾯加上⼀个英⽂的括号() ⾥⾯加上转换类型,就是强制转换,⾼转低的时候才会强制转换。
(类型)变量名/*强制类型转换(⾼到低需要强制转换)⾃动类型转换(低到⾼就不需要强制转换)注意点:1.不能对布尔值进⾏转换2.不能把对象类型转换为不相⼲的类型3.在把⾼容量转换到低容量的时候,需要强制转换4.转换的时候可能存在内存溢出,或者精度问题*/System.out.println(i);//输出128System.out.println(b);//输出-128System.out.println("===============================");System.out.println((int)23.7);//输出结果23,Double类型,⾼转低(强制转换)System.out.println((int)-45.89f);//输出结果-45,float类型,⾼转低(强制转换)System.out.println("===============================");char c='a';int d=c+1;System.out.println(d);//输出98System.out.println((char) d);//输出b,a后⾯+1就是b,“ASCII编码表”}}``````javapublic class Demo03 {public static void main(String[] args) {//操作⽐较⼤的数的时候,注意溢出问题//JDK7新特性,数字之间可以⽤下划线分割int money =1_000_000_000;int years =20;int total=money*years;//输出结果-1474836480,计算的时候溢出了long total01=money*years;//输出结果-1474836480,因为money和years默认是int类型,所以计算的时候就按照int,所以就内存溢出,转换之前就已经存在问题。
Java数据类型与转换Java数据类型分为三大类布尔型,字符型(char),数值型(整数,浮点型)整数类型有:byte(8bits)、short(16bits)、int(32bits)、long(64bits)、浮点类型有:单精度(32bits float)、双精度(64bits double)boolean类型变量的取值有:ture、falsechar数据类型有:unicode字符,16位数据类型转换(1). 简单数据类型之间的转换简单数据类型包括:byte,short,char,int,long,float,double由低级到高级分别为(byte,short,char)--int--long--float--double.低级到高级的自动类型转换低到高级(byte,short,char)->int->long->float->double转换方法:直接赋值代码如下:byte b;int i=b;long l=b;float f=b;double d=b;.高级到低级的强制类型转换高到低级double->float->long->int->(byte,short,char)转换方法:低数据类型=(类型)高数据类型代码如下:int i=99; byte b=(byte)i; char c=(char)i; float f=(float)i;*对byte,short,char三种类型而言,他们是平级的不能相互自动转换,可使用强制类型转换byte b1=(byte)short1; char c1=(char)short1;.包装类过渡类型转换(使用类的xxxValue()方法)String和Date本身就是类。
Java共有六个包装类是Boolean、Character、Integer、Long、Float、Double,字面上它们分别对应于boolean、char、int、long、float、double。
java类型转换的原理Java类型转换的原理在Java中,类型转换是指将一个数据类型的值转换为另一个数据类型的过程。
类型转换可以分为两种:隐式类型转换和显式类型转换。
1. 隐式类型转换隐式类型转换是指在不需要进行特殊操作的情况下,系统自动将一种数据类型转换为另一种数据类型。
在隐式类型转换中,目标类型的范围要大于源类型的范围,这样才可以保证数据不会丢失。
例如,将一个整型数值赋值给一个浮点型变量时,就会发生隐式类型转换。
由于浮点型的取值范围比整型大,所以整型数值可以自动转换为浮点型。
2. 显式类型转换显式类型转换是指在需要进行特殊操作时,通过强制类型转换将一种数据类型转换为另一种数据类型。
在显式类型转换中,需要使用特定的语法来指定要转换的数据类型。
例如,将一个浮点型数值赋值给一个整型变量时,就需要进行显式类型转换。
由于整型的取值范围比浮点型小,所以需要通过强制类型转换来将浮点型数值转换为整型。
3. 类型转换的规则在进行类型转换时,需要遵守一些规则,以确保转换的正确性和安全性。
- 转换的目标类型必须是源类型的超集,即目标类型的范围要大于源类型的范围。
- 对于数值类型的转换,如果目标类型的范围比源类型小,可能会发生溢出或精度丢失的情况,所以需要谨慎使用。
- 对于引用类型的转换,只能在具有继承关系的类之间进行转换,否则会发生编译错误。
- 在进行显式类型转换时,需要使用强制类型转换的语法,即在目标类型前加上圆括号并写上目标类型的名称。
4. 类型转换的应用场景类型转换在实际编程中有广泛的应用场景,常见的应用场景包括:- 数据存储和传输:在进行数据的存储和传输时,不同的系统或组件之间可能使用不同的数据类型,需要进行类型转换才能进行数据的交互。
- 数值计算:在进行数值计算时,可能需要将不同类型的数值进行转换,以便进行正确的计算。
- 类型兼容性:在进行方法调用或对象赋值时,需要将不同类型的对象进行转换,以兼容接收对象的类型要求。
java 基本数据类型之间的转换 - fishinhouse的专栏 - CSDNBlog fishinhouse的专栏做一件事,最难的是开始,最重要的是坚持。
如果坚持,就会达到目的! 登录注册全站当前博客空间博客好友相册留言wl ID:fishinhouse java 基本数据类型之间的转换收藏新一篇: 常用log4j配置 | 旧一篇: java代码编写的30条建议我们知道,Java的数据类型分为三大类,即布尔型、字符型和数值型,而其中数值型又分为整型和浮点型;相对于数据类型,Java的变量类型为布尔型boolean;字符型char;整型byte、short、int、long;浮点型float、double。
其中四种整型变量和两种浮点型变量分别对应于不同的精度和范围。
此外,我们还经常用到两种类变量,即String和Date。
对于这些变量类型之间的相互转换在我们编程中经常要用到,在下面的论述中,我们将阐述如何实现这些转换。
1 数据类型转换的种类 java数据类型的转换一般分三种,分别是: (1. 简单数据类型之间的转换 (2. 字符串与其它数据类型的转换 (3. 其它实用数据类型转换下面我们对这三种类型转换分别进行论述。
2 简单数据类型之间的转换在Java中整型、实型、字符型被视为简单数据类型,这些类型由低级到高级分别为(byte,short,char--int--long--float--double 简单数据类型之间的转换又可以分为:●低级到高级的自动类型转换●高级到低级的强制类型转换●包装类过渡类型能够转换 2.1自动类型转换低级变量可以直接转换为高级变量,笔者称之为自动类型转换,例如,下面的语句可以在Java中直接通过:byte b; int i=b; long l=b; float f=b; double d=b; 如果低级类型为char型,向高级类型(整型)转换时,会转换为对应ASCII码值,例如r char c='c'; int i=c;System.out.println("output:" i; 输出:output:99; 对于byte,short,char三种类型而言,他们是平级的,因此不能相互自动转换,可以使用下述的强制类型转换。
java强制类型转换的基本格式
Java强制类型转换是指将一种数据类型转换为另一种数据类型的
过程。
它允许将变量从一种类型转换为另一种类型,只要该类型的表
示更小。
它的基本格式为:
(类型) 表达式
这种方式叫做强制类型转换,它将把表达式强制转换为括号内指
定的数据类型。
强制类型转换必须遵循以下几条规则:
1.只有兼容的数据类型才能够进行类型转换。
2.如果被转换的数据类型比目标数据类型的表示范围小,那么精
度可能会丢失。
3.如果被转换的数据类型比目标数据类型的表示范围大,那么数
据将会被截断。
4.在强制类型转换时,不能将boolean类型转换为其他任何类型,也不能将其他类型转换为boolean类型。
5.强制类型转换应该使用小括号将要转换的表达式括起来。
6.如果一个常量被强制转换为byte类型,它的值必须在byte类
型的取值范围内(-128~127)。
7.在转换过程中,不能使用一元运算符(例如:+,-,~,++和--)作为转换类型。
以上就是java强制类型转换的基本格式,它允许我们将变量从一
种数据类型转换为另一种类型,但是必须确保兼容性以及不会丢失精
度或截断数据。
简述Java变量和强制转换类型简述Java变量和强制转换类型java变量1. java变量变量:顾名思义,就是在java执⾏程序过程中可以发⽣改变的量,就好⽐⽅程式中的未知数X⼀样。
变量的内存分配过程int a ; //声明a = 10; // 赋值System.out.println(a); //使⽤2. 数据类型⼋⼤基本数据类型整数类型(5种)字节数(1字节=8bit)取值范围byte1-27~27(2^8=256种状态)short2-215~215-1int4-231~231-1long8-263~263-1取值范围:类型容量是2^(字节数*8)^,正负对半,负数范围-2^(字节数*8-1)^~-1整数范围0~2^(字节数*8-1)^-1浮点类型(2种)字节数(1字节=8bit)取值范围float4-3.403E38~3.403E38double8-1.798E308~1.798E308虽然double和long都是8个字节,但是因为存储⽅式的不同,所以取值范围不同。
⽽且浮点类型在计算时会有精度丢失,所以不能⽤来作为⾦融⽅⾯的精准计算。
布尔类型字节数取值范围boolean1True false(0 or 1)字符类型字节数取值范围char20~2^16-1(65535)char的赋值⽅法:char ch=97 直接读取字符编码char ch=’a’ 字符赋值char ch=’\u0043’ 对应的Unicode编码有0~65535个’\u0041’为⼗六进制也就是97char ch=’中’ 中⽂字符占2个字节,⽽在Unicode编码中也有对应的字符。
接⼝类数据类型类 class接⼝ ingterface数组 [] int[]强制转换类型类型转换的基本原则是取值范围由⼩向⼤转换,即有byte-->short-->int-->long-->float-->doublechar -->注意:i. char与byte、short不存在⼦集关系所以不能⾃动转换ii. 其他都可以直接⾃动转换iii. boolean类型不参与类型转换1.⾃动类型转换byte a=10;int b = a; //没问题可以⾃动转换2.强制类型转换int b=10;byte a=(byte)b; //⼤范围转⼩范围必须使⽤强制转换3.short tybe定义byte a=127; //在范围内直接short b = (short)36666; //超出short的范围了默认是int必须使⽤强制转换4.char与short byte 之间必须使⽤强制转换byte a=99;char b = (char)a;5.在计算过程中,会⾃动向⾼类型转换int a=5;double b=3.69;float c = (float)a b; //a b结果已经是double类型,所以需要强制转换6.byte short char之间的运算,底层都会转换为int类型byte a=10;char b=’a’;short c=(short)a*b; //不管是否存在⼦集,在运算过程中编译器已经把全部数值都转换为int类型。
【Java】数据类型转换:⾃动类型转换和强制类型转换
在 Java 程序中,不同基本数据类型的值经常需要进⾏相互转换。
Java 语⾔包括 8 种基本数据类型,⽀持其中 7 种进⾏类型转换(不包括 boolean)。
转换⽅式有两种:“⾃动类型转换”和“强制类型转换”。
基本数据类型名称关键字⼤⼩取值范围
字节型byte8位-27 ~ 27-1
短整型short16位-215 ~ 215-1
整型int32位-231 ~ 231-1
长整型long64位-263 ~ 263-1
浮点型float32位3.4e-38 ~ 3.4e+38
双精度double64位1.7e-38 ~ 1.7e+38
字符型char16位'\u000' ~ '\uFFFF'
布尔型boolean1位true/false
1.⾃动类型转换
当把⼀个取值范围⼩的变量直接赋值给⼀个取值范围⼤的变量时,系统将进⾏⾃动类型转换。
Java 中 7 个基本数据类型间的⾃动类型转换图为(虚线表⽰可能丢失精度):
2.强制类型转换
当把⼀个取值范围⼤的变量直接赋值给⼀个取值范围⼩的变量,即沿上图箭头反⽅向赋值时,必须进⾏强制类型转换。
语法为:
数据类型1 变量1 = (数据类型1) 变量2;。
Java中几种常用的数据类型之间转换方法: 1.短整型-—〉整型如: short shortvar=0;int intvar=0;shortvar= (short) intvar2.整型-->短整型如: short shortvar=0;int intvar=0;intvar=shortvar;3.整型-〉字符串型如: int intvar=1;String stringvar;Stringvar=string.valueOf (intvar);4.浮点型—〉字符串型如: float floatvar=9。
99f;String stringvar;Stringvar=String。
valueOf (floatvar);5.双精度型->字符串型如: double doublevar=99999999。
99;String stringvar;Stringvar=String。
valueOf (doublevar);6. 字符型—〉字符串型如:char charvar=’a’;String stringvar;Stringvar=String。
valueOf (charvar);7字符串型—〉整型、浮点型、长整型、双精度型如: String intstring=”10”;String floatstring=”10。
1f”;String longstring=”99999999";String doubleString="99999999。
9”;Int I=Integer。
parseInt (intstring);Float f= Integer.parseInt (floatstring);Long lo=long。
parseInt (longstring);Double d=double. parseInt (doublestring);8字符串型—〉字节型、短整型如:String s=”0”;Byte b=Integer。
Java中数据类型及其之间的转换基本的数据类型基本类型有以下四种:1)int长度数据类型有:byte(8bits)、short(16bits)、int(32bits)、long(64bits)、2)float长度数据类型有:单精度(32bits float)、双精度(64bits double),JAVA中将小数默认为double类型,若要定义float需在数据后面用f声明;3)boolean类型变量的取值有:ture、false4)char数据类型有:unicode字符,16位对应的类类型:Integer、Float、Boolean、Character、Double、Short、Byte、Long 基本的数据类型由低级到高级分别为:(byte、short、char)——int——long——float——doublePS:此处的“级别”是指表示值的范围的大小。
数据类型之间的转转换分为以下几种情况:1)低级到高级的自动类型转换;2)高级到低级的强制类型转换(会导致溢出或丢失精度);3)基本类型向类类型转换;4)基本类型向字符串的转换;5)类类型向字符串转换基本数据类型之间的转换规则1.在一个双操作数以及位运算等算术运算式中,会根据操作数的类型将低级的数据类型自动转换为高级的数据类型,分为以下几种情况:1)只要两个操作数中有一个是double类型的,另一个将会被转换成double类型,并且结果也是double类型;2)只要两个操作数中有一个是float类型的,另一个将会被转换成float类型,并且结果也是float类型;3)只要两个操作数中有一个是long类型的,另一个将会被转换成long类型,并且结果也是long类型;4)两个操作数(包括byte、short、int、char)都将会被转换成int类型,并且结果也是int类型。
2. 如果低级类型为char型,向高级类型(整型)转换时,会转换为对应ASCII码值,再做其它类型的自动转换。
黑马程序员:【Java基础】之变量的类型转换(6) 在编写程序的过程中,有时要将一种数据类型的值赋给另一种不同数据类型的变量,或者要使用不同的数据类型参与运算,这时候就需要进行数据类型的转换。
根据转换条件不同,数据类型转换分为两种:自动类型转换和强制类型转换。
1.自动类型转换(也叫隐式类型转换)
实现这种转换要满足两个条件,第一是两种类型彼此兼容,第二是目标类型的取值范围大于源类型。
如,当byte型向int型转换时,由于int型取值范围大于byte型,就会发生自动转换。
所有的数字类型,包括整型和浮点型彼此都可以进行这样的转换。
如:
byte b = 5;
int x = b;
上面的语句将byte类型的变量b的值赋给int类型的变量x,由于int类型的取值范围大于byte类型的取值范围,编译器在赋值过程中不会造成数据失真,所以编译器能够自动完成这种转换,在编译时不报告任何错误。
变量在进行自动类型转换时,不需要做任何特别的说明,下面列举出3种会发生自动类型转换的情况:
(1)、byte类型的数据赋值给short、int、long类型的变量;short类型和char类型的数据赋值给int、long类型的变量;int类型的数据赋值给long类型的变量。
(3)、byte、char、short、int类型的数据赋值给float类型的变量。
(4)、byte、char、short、int、long、float类型的数据赋值给double类型的变量。
2.表达式类型自动提升
所谓表达式是指由变量和运算符组成的一个算式。
在表达式中参与运算的变量在运算之前,也有可能发生自动类型转换,这就是表达式数据类型的自动提升,如一个byte型的变量在运算期间类型会自动提升为int型。
先来看个例子,如下所示。
public class Test01 {
public static void main(String[] args) {
byte b = 5;
b = b + 10;
System.out.println("b=" + b);
}
}
byte型的b在运算期间类型自动由byte型转换为int型,然后和int型4进行相加计算,其结果仍然是个int值,第4行代码的作用相当于将结果的int值给变量b,由于变量b的类型为byte,存不下int值,因此就出现了如图所示的错误,这时可以通过强制类型转换来解决这个错误。
表达式自动提升会有以下几种情况
(1)、所有的byte型、short型和char的值将被提升到int型。
(2)、如果一个操作数是long型,计算结果就是long型;
(3)、如果一个操作数是float型,计算结果就是float型;
(4)、如果一个操作数是double型,计算结果就是double型。
3.强制类型转换(也叫显式类型转换)
当两种类型彼此不兼容,或目标类型取值范围小于源类型时,自动转换无法进行,这时就需要进行强制类型转换。
强制类型转换的通用格式如下:
目标类型变量=(目标类型)值,如:
byte a;
int b;
a=(byte)b;
在上面的代码中,由于表达式类型自动提升,“b+4”的运算结果为一个int值,将一个int 值给byte类型的变量b,就会出错,此时需要显式地声明类型转换,程序便不会报错,这就是强制类型转换。
强制类型转换一般发生于将一个取值范围较大的数赋值给一个取值范围较小的变量的情况,这种转换极容易造成数据丢失精度,使用时需慎重处理。