Java数据类型转换:强制类型转换 自动类型转换28

合集下载

Java_基础试题及答案

Java_基础试题及答案


继承

多态 。
4. 算 术 运 算 异 常 、 下 表 数 组 越 界 异 常 类 都 源 于
Exception
这个父类。
5. 在 Java 程序中,通过类的定义只能实现 单
重继承,但通过接
口的定义可以实现 多
重继承。
6. 接口的所有成员属性都默认且必须是
public
、static

Final
的。
班级:
姓名:
学号:
《JAVA 程序设计》试题 1
一、 单项选择填空(每小题 2 分,共 50 分)
1. 下列有关 Java 语言的叙述中,正确的是(B) A、Java 是不区分大小写的 B、源文件名与 public 权限的类名必须相同 C、源文件名其扩展名为.jar D、源文件中 public 类的数目不限
主类,且 main 方法的定义是唯一的,以下哪项是正确的(b)
A、public static void main() B、public static void main(String args[ ])
C、public static int main(String arg[])
D、public void main(String arg[])
14. Java 的字符类型采用的是 Unicode 编码方案,每个 Unicode 码占用____
个比特位。( b )
A、8
B、16 C、32
D、64
15. 下面哪个选项是 Java 语言中的关键字?(c)
A.toString B.Class C.instanceof D.Int
16. 以下哪个选项是字符串对象的长度?(d)
9. 以下程序的运行结果为(d)

java判断基本数据类型的方法

java判断基本数据类型的方法

java判断基本数据类型的方法在Java中,判断基本数据类型的方法包括使用关键字"instanceof"、自动装箱与拆箱、逻辑运算符、比较运算符、类型转换等。

下面将分别详细介绍这些方法。

1. 使用关键字"instanceof":instanceof是Java中的一个二元操作符,可以用来判断一个对象是否是一些类的实例,也可以用来判断一个类是否是另一个类的子类。

通过使用instanceof关键字,我们可以判断一个对象是否是一些基本数据类型的实例。

例如,我们可以使用下面的代码判断一个对象是否是整数类型的实例:```Object obj = 123;if (obj instanceof Integer)System.out.println("obj是整数类型的实例");```这段代码中,我们使用instanceof关键字将obj与Integer类型进行比较,如果obj是Integer类型的实例,则输出"obj是整数类型的实例"。

2.自动装箱与拆箱:在Java中,基本数据类型和对应的包装类之间存在着自动装箱和拆箱的机制。

自动装箱是指将基本数据类型自动转换为对应的包装类,而自动拆箱则是将包装类自动转换为对应的基本数据类型。

通过使用自动装箱和拆箱机制,我们可以将基本数据类型与包装类进行比较。

例如,我们可以使用下面的代码判断一个对象是否是整数类型的实例:```Object obj = 123;if (obj instanceof Integer)System.out.println("obj是整数类型的实例");```这段代码中,我们将整数123自动装箱为Integer类型的对象,然后再使用instanceof关键字将obj与Integer类型进行比较。

3.逻辑运算符:在Java中,逻辑运算符可以用来对基本数据类型进行判断。

java中的强转int的原理和算法

java中的强转int的原理和算法

java中的强转int的原理和算法Java中的强制类型转换(int)的原理和算法在Java中,强制类型转换是将一种数据类型转换为另一种数据类型的操作。

当我们需要将一个较大的数据类型转换为较小的数据类型时,就需要进行强制类型转换。

强制类型转换可以使用一对圆括号和要转换的目标类型来实现,例如int x = (int) 3.14;在本文中,我们将详细探讨Java中强制类型转换为int的原理和算法。

我们将从如何执行强制类型转换开始,然后深入研究强制类型转换的算法和相关注意事项。

一. 执行Java中的强制类型转换在进行强制类型转换之前,我们需要了解两个重要的概念:拓宽转换和收缩转换。

拓宽转换是指将较小的数据类型转换为较大的数据类型,它是隐式转换的一种形式。

例如,将一个byte类型的变量赋值给int类型的变量,编译器会自动进行类型转换,无需显式地使用强制类型转换。

收缩转换是指将较大的数据类型转换为较小的数据类型,它需要显式地使用强制类型转换。

例如,将一个double类型的变量赋值给int类型的变量,就需要使用强制类型转换。

当执行强制类型转换int时,编译器会根据以下算法来进行转换:1. 如果要转换的值是常量表达式,且该表达式的值可以用目标类型表示,那么编译器会在编译时将其转换为目标类型。

例如,int x = (int) 3.14; 编译器会将3.14转换为3。

2. 如果要转换的值是一个变量,那么编译器将在运行时执行强制类型转换。

在运行时,编译器会检查要转换的值是否在目标类型的取值范围内。

如果值可以表示为目标类型,那么转换成功;否则,会引发一个运行时异常。

二. 强制类型转换int的算法当要将一个较大的数据类型转换为int类型时,Java采用以下算法:1. 首先,丢弃较大数据类型的高位部分,只保留低位的数值。

2. 然后,根据较大数据类型的符号位来确定转换后的int值的符号。

如果较大数据类型为正数,则转换后的int值也为正数;如果较大数据类型为负数,则转换后的int值也为负数。

java基本数据类型之间的转换

java基本数据类型之间的转换

java基本数据类型之间的转换Java是一门强类型语言,变量需要明确指定其数据类型。

Java中含有8个基本数据类型,它们是boolean、byte、short、int、long、float、double和char。

在Java编程中,有时也需要对这些基本数据类型进行一些转换。

本文将围绕Java基本数据类型之间的转换展开。

一、自动类型转换Java中可以将一种数据类型的变量赋值给另一种数据类型的变量,这种转换称为自动类型转换。

自动类型转换是指从小类型到大类型的转换过程, Java在内部进行转换,无需开发人员进行显式的操作。

例如,将一个byte类型的变量赋值给int类型的变量:byte b = 10;int i = b;在这个过程中,Java自动将byte类型的变量b转换成int类型,并将其赋值给i。

二、强制类型转换有时需要对一个变量强制转换为另一种类型,这种转换称为强制类型转换。

强制类型转换是从大类型到小类型的转换过程,在进行强制类型转换时,需要在转换前使用小括号指定要转换的类型。

例如,将一个double类型的变量强制转换成int类型:double d = 10.5;int i = (int)d;在这个过程中,Java会将double类型的变量d转换成int类型,并将其赋值给i。

需要注意的是,在进行强制类型转换时,可能会出现数据精度丢失的情况。

三、字符类型转换在Java中,char类型可以被当做数字来处理,它与int类型可以互相转换。

在Java中,可以使用强制类型转换将字符类型转换成整型,例如:char c = 'a';int i = (int)c;在这个过程中,字符'a'会被转换成对应的ASCII码97。

四、字符串类型转换Java中的字符串类型与其他基本数据类型之间的转换需要借助于包装类。

Java中含有六个与基本数据类型对应的包装类,它们是Boolean、Byte、Short、Integer、Long、Float、Double和Character。

水利信息化高级编程(Java程序设计Ⅱ)智慧树知到答案章节测试2023年

水利信息化高级编程(Java程序设计Ⅱ)智慧树知到答案章节测试2023年

第一章测试1.给定如下Java代码,下列()方法可以将其加入Example类中,并且能够编译正确。

public class Example {public int getSomething(int d) {return d;}}A:B.public void getSomething(int i) {} B:private int getSomething(int i,String s) {} C:private int getSomething(int i,String s) {return 20;} D:publicdouble getSomething() {return “abc”} 答案:C2.构成方法重载的要素不包括()。

A:方法名相同 B:在同一个类中 C:返回类型不同 D:参数列表不同答案:C3.在如下所示的Example类中,共有()个构造方法。

public class Example{private int x;private Example() {x=1;}public void Example (double f){this.x (int)f;}public Example(String s) {}} A:4 B:1 C:2 D:3 答案:C4.给定如下Java代码,编译运行,结果将是()public class Example{publicdouble result(double d1,double d2){return d1<d2?D1:d2;}public doubleresult(int d1,double d2){return d1>d2?d1:d2;}public int result(int d1,intd2){return d1-d2;}private int result(int i){return i;}public static voidmain(String[ ] args){Example s newExample();System.out.print(s.result(2,3.0)+“,”)System.out.print(s.result(4.0,4.5)+“,”);System.out.print(s.result(10,9));}} A:3.0,4.5,1 B:3.0,4.0,1 C:2,4.0,1 D:-1,4.0,1 答案:B5.下列不属于面向对象技术的基本特征是() A:模块性 B:多态性 C:封装性 D:继承性答案:A6.关于面向对象方法的优点,下列正确的叙述是() A:与人类习惯的思维方法比较一致 B:可重用性好 C:以数据操作为中心 D:可维护性好答案:ABD7.当类中的一个成员方法被下面哪个修饰符修饰后,该方法只能在本类中被访问() A:private B:public C:final D:default 答案:A8.关于static的说法正确的是() A:static可以把一个普通方法变为一个类方法 B:static可以把普通的成员方法变为一个静态方法 C:可以定义静态方法,但不能定义静态变量 D:class前不可以用static作为修饰符答案:ABD9.方法的调用() A:必须提供实际参数 B:只能是一个表达式 C:必须是一条完整的语句 D:可能是语句,也可能是表达式答案:D10.通过使用关键字()创建对象 A:instantiate B:new C:create D:object 答案:B第二章测试1.若一个类中对某个方法进行重载,能够区分这些重载方法的手段是() A:它们的返回类型不同 B:它们的参数列表不同 C:它们的方法名不同 D:它们的访问控制权限修饰符不同答案:B2.Java语言的类间的继承关系是() A:多重的 B:线程的 C:单重的 D:不能继承的答案:C3.下面叙述中,错误的是?() A:父类不能替代子类 B:子类继承父类 C:子类能替代父类 D:父类包含子类答案:D4.下列关于抽象类的描述中,错误的是?() A:抽象类是不可以有构造方法的 B:抽象类是用修饰符abstract说明的 C:抽象类通常要有它的子类 D:抽象类是不可以定义对象的答案:A5.在成员方法的访问控制修饰符中,规定访问权限包含该类自身,同包的其他类和其他包的该类子类的修饰符是?() A:private B:protected C:默认D:public 答案:B6.下列关于继承性的描述中,错误的是?() A:子类继承了父类中除私有的成员以外的其他成员 B:Java通过接口可使子类使用多个父类的成员 C:Java支持单重继承和多重继承 D:一个类可以同时生成多个子类答案:C7.设有如下类的定义:()public class parent {int change() {}}class Childextends Parent { }则,下面哪些方法可加入Child类中? A:abstract intchang(){ } B:int chang(int i){ } C:public int change(){ } D:private intchange(){ } 答案:BC8.下面对于单例设计模式的描述,正确的是?() A:定义静态方法返回该类实例 B:在内部创建一个该类的实例对象,使用静态变量引用该实例对象 C:使用private修饰静态变量,禁止外界直接访问 D:类中定义一个无参的构造方法,并且声明为私有答案:ABCD9.抽象类不能实例化。

java语言基础--数据类型:详解char、int、自动类型转换、强制类型转换、精度损失

java语言基础--数据类型:详解char、int、自动类型转换、强制类型转换、精度损失

java语⾔基础--数据类型:详解char、int、⾃动类型转换、强制类型转换、精度损失数据类型--char⼀、char1.11. char占⽤2个字节2. char取值范围:【0~65535】3. char采⽤unicode编码⽅式4. char类型的字⾯量⽤单引号括起来5. char可以存储⼀个汉字1public class Test{23public static void main(String[] args){45//定义⼀个char类型的变量,起名c,同时赋值字符‘a’6char c1 = 'a';7 System.out.println(c);//结果为:a89//⼀个中⽂字符占⽤2个字节,char类型刚好是2个字节10//所以java中的char类型可以存储⼀个中⽂字符11char c2 ='果';12 System.out.println(c2);//结果为:果1314//如果加上单引号0就不是数字0了15char c3 = '0';16 System.out.println(c3);1718//编译报错:类型不兼容19char c4 = "a";20 System.out.println(c4);2122//错误:未结束的字符⽂字23char c5 = 'ab';24 System.out.println(c5);2526 }27 }1.2 数据类型-- 转义字符 ‘\’\t 表⽰"制表符tab"1public class Test{2public static void main(Stirng[] args){34//普通的n字符5char c1 = 'n';6 System.out.println(c1);//结果为:n78//经过编译,发现编译通过,这说明以下并不是⼀个字符串,⽽是⼀个字符9//这是⼀个“换⾏符”,属于char类型的数据10//反斜杠在java语⾔中具有转义功能11char c2 = '\n';1213 System.out.print("A");14 System.out.print(c2);15 System.out.println("B");16输出结果:17 A18 B19202122//制表符\t(tab)23//强调:制表符和空格不同,它们的ASCII码不同,体现在键盘上两个不同的“按键”24char y = '\t';25 System.out.print("A");26 System.out.print(y);27 System.out.println("B");28输出结果:29 A B3031 //假设现在想在控制台上输出⼀个‘ ' ’字符怎么办//错误:空字符⽂字//System.out.println(' ' ');//修改错误,(\'联合起来表⽰⼀个普通的‘)System.out.println('\'');3233//要求控制台上输出“反斜杠字符”34//反斜杠将后⾯的单引号转义成不具备特殊含义的普通单引号字符35//左边的单引号缺少了结束的单引号字符,编译报错36/*37 char k = '\';38 System.out.println(k); //编译报错39*/4041//第⼀个\具有转义功能,将后⾯的反斜杠转译为普通的反斜杠字符42//结论:java当中两个反斜杠代表⼀个普通的反斜杠字符43char k = '\\';44 System.out.println(k);4546//输出"HelloWorld!"47//System.out.println("\"HelloWorld!\"");4849 }50 }1public class CharTest{2public static void main(String[] args){3//双引号括起来的是字符串4 System.out.println("test");5//希望输出的结果是:“test”6//错误:需要')'7//System.out.println(""test"");8//修改9 System.out.println("\"test\"");10 System.out.println("“test”");//内部⽤中⽂双引号“”是可以的1112//编译报错:4e2d是字符串13//错误:未结束的字符⽂字14char x = '4e2d';1516//反斜杠u表⽰后⾯的是⼀个字符的unicode编码17//uncode编码是16进制的18char x = '\u4e2d';19 System.out.println(x);//'中'20 }21 }⼆、数据类型--整数型int1、java语⾔当中的“整数型字⾯值”被默认当作int类型来处理,要让这个“整数型字⾯值”被当作long类型来处理的话,需要在“整数型字⾯值”后⾯添加1/L,建议使⽤⼤写L2、java语⾔当中的整数型字⾯值有三种表⽰⽅式:⼗进制【是⼀种缺省默认的⽅式】int a=10;System.out.println(a);//10⼋进制【在编写⼋进制整数型字⾯值的时候需要以0开始】int b=010;System.out.println(b);//8⼗六进制【在编写⼗六进制整数型字⾯值的时候需要以0x开始】int c=0x10;System.out.println(c);//16⼆进制【JDK8新特性,低版本不⽀持】int d = 0b10;System.out.println(d);//2⾃动类型转换:1/*2在jiava中重要结论:3在任何情况下,整数型的“字⾯量/数据”默认被当作int类型处理。

数据类型之间的转换

数据类型之间的转换

数据类型之间的转换在编程中,数据类型之间的转换是常见的操作,通常涉及到不同数据类型之间的相互转换。

以下是一些常见的数据类型之间的转换方式:1. 隐式类型转换(自动类型转换):当一个数据类型的变量赋值给另一个数据类型的变量时,如果目标数据类型可以表示源数据类型的所有值,那么会发生隐式类型转换。

例如,将int赋值给double。

javaCopy codeint intValue = 10;double doubleValue = intValue; // 隐式类型转换2. 显式类型转换(强制类型转换):当目标数据类型无法容纳源数据类型的所有值时,需要使用显式类型转换,也称为强制类型转换。

在Java中,使用强制类型转换需要使用括号将目标类型括起来,并在前面加上目标类型的名称。

javaCopy codedouble doubleValue = 10.5;int intValue = (int) doubleValue; // 显式类型转换3. 字符串转换:将基本数据类型转换为字符串可以使用字符串连接或String.valueOf()等方法。

javaCopy codeint intValue = 42;String stringValue = intValue + ""; // 使用字符串连接// 或String stringValue2 = String.valueOf(intValue); // 使用String.valueOf()将字符串转换为基本数据类型可以使用相应的包装类的parseXxx 方法或 valueOf 方法。

javaCopy codeString strValue = "123";int intValue = Integer.parseInt(strValue); // 使用Integer.parseInt()4. 类型转换方法(Java 8及以上):Java 8引入了新的方法,使得在不同数据类型之间进行转换更加方便。

JAVA中常用数据类型之间转换的方法

JAVA中常用数据类型之间转换的方法

JAVA中常用数据类型之间转换的方法在Java中,常见的数据类型转换包括基本数据类型之间的转换、引用数据类型之间的转换以及基本数据类型与引用数据类型之间的转换。

下面将依次介绍这些转换方法。

1.基本数据类型之间的转换:- 自动类型转换:当两个数据类型不完全相同时,较小范围的数据类型可以自动转换为较大范围的数据类型。

例如,byte可以自动转换为short、int、long、float或double,而short可以自动转换为int、long、float或double。

- 强制类型转换:当两个数据类型完全不相同时,需要使用强制类型转换进行转换。

强制类型转换需要使用括号将目标类型放在待转换的表达式前面。

例如,int可以强制转换为byte,即`(byte)a`,其中a为int 变量。

2.引用数据类型之间的转换:- 向上转型:子类对象可以自动转换为父类对象,这种转换被称为向上转型。

向上转型可以提高代码的可扩展性和复用性。

例如,Animal类的子类可以被赋值给Animal类型的引用变量。

- 向下转型:父类对象可以通过强制类型转换为子类对象,这种转换被称为向下转型。

向下转型在编译时是合法的,但在运行时可能会抛出ClassCastException异常。

因此,在进行向下转型时,需要先使用instanceof运算符检查对象是否是目标类型的实例。

例如,Animal类的引用变量可以转换为Cat类型的引用变量,即`(Cat)animal`,其中animal为Animal类型的引用变量。

3.基本数据类型与引用数据类型之间的转换:- 基本数据类型转换为引用数据类型:基本数据类型可以通过包装类(如Integer、Double、Boolean等)的构造函数或valueOf(方法来转换为对应的包装类对象。

例如,int可以转换为Integer,即`Integer.valueOf(a)`,其中a为int变量。

- 引用数据类型转换为基本数据类型:引用数据类型可以通过调用包装类的xxxValue(方法来获取对应的基本数据类型值。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据类型的转换是在所赋值的数值类型和被变量接收的数据类型不一致时发生的,它需要从一种数据类型转换成另一种数据类型。

数据类型的转换可以分为隐式转换(自动类型转换)和显式转换(强制类型转换)两种。

隐式转换(自动类型转换)
如果以下 2 个条件都满足,那么将一种类型的数据赋给另外一种类型变量的时,将执行自动类型转换(automatic type conversion)。

•两种数据类型彼此兼容
•目标类型的取值范围大于源数据类型(低级类型数据转换成高级类型数据)
当以上 2 个条件都满足时,拓宽转换(widening conversion)发生。

例如 byte 类型向 short 类型转换时,由于 short 类型的取值范围较大,会自动将 byte 转换为 short 类型。

在运算过程中,由于不同的数据类型会转换成同一种数据类型,所以整型、浮点型以及字符型都可以参与混合运算。

自动转换的规则是从低级类型数据转换成高级类型数据。

转换规则如下:
•数值型数据的转换:byte→short→int→long→float→double。

•字符型转换为整型:char→int。

以上数据类型的转换遵循从左到右的转换顺序,最终转换成表达式中表示范围最大的变量的数据类型。

例 1
顾客到超市购物,购买牙膏 2 盒,面巾纸 4 盒。

其中牙膏的价格是 10.9 元,面巾纸的价格是5.8 元,求商品总价格。

实现代码如下:
1.public static void main(String[] args) {
2. float price1 = 10.9f; // 定义牙膏的价格
3. double price2 = 5.8; // 定义面巾纸的价格
4. int num1 = 2; // 定义牙膏的数量
5. int num2 = 4; // 定义面巾纸的数量
6. double res = price1 * num1 + price2 * num2; // 计算总价
7. System.out.println("一共付给收银员" + res + "元"); // 输出总价
8.}
上述代码中首先定义了一个 float 类型的变量存储牙膏的价格,然后定义了一个 double 类型的变量存储面巾纸的价格,再定义两个 int 类型的变量存储物品的数量,最后进行了乘运算以及和运算之后,将结果储存在一个 double 类型的变量中进行输出。

程序执行结果如下图 1 所示:
图 1 运行结果从执行结果看出,float、int 和 double 三种数据类型参与运算,最后输出的结果为 double 类型的数据。

这种转换一般称为“表达式中类型的自动提升”。

自动类型提升有好处,但它也会引起令人疑惑的编译错误。

例如,下面看起来正确的程序却会引起问题:
byte b = 50;
b = b * 2; // Type mismatch: cannot convert from int to byte
如上所示,第二行会报“类型不匹配:无法从int转换为byte”错误。

该程序试图将一个完全合法的 byte 型的值 50*2 再存储给一个 byte 型的变量。

但是当表达式求值的时候,操作数被自动的提升为 int 型,计算结果也被提升为 int 型。

这样表达式的结果现在是 int 型,不强制转换它就不能被赋为 byte 型。

确实如此,在这个特别的情况下,被赋的值将仍然适合目标类型。

所以应该使用一个显示的强制类型转换,例如:
byte b = 50;
b = (byte)(b*2);
这样就能产生正确的值 100。

注意:char 类型比较特殊,char 自动转换成 int、long、float 和 double,但 byte 和 short 不能自动转换为 char,而且 char 也不能自动转换为 byte 或 short。

显式转换(强制类型转换)
尽管自动类型转换是很有帮助的,但并不能满足所有的编程需要。

例如,如果你需要将double 型的值赋给一个 int 型的变量,你将怎么办?
这种转换不会自动进行,因为 double 型的变化范围比 int 型的要小。

这种转换有使成为“缩小转换”,因为你肯定要将源数据类型的值变小才能适合目标数据类型。

所以当两种数据类型不兼容,或目标类型的取值范围小于源类型时,自动转换将无法进行,这时就需要进行强制类型转换。

其语法格式如下:
(type)variableName
其中,type 为 variableName 要转换成的数据类型,而 variableName 是指要进行类型转换的变量名称,强制转换的实例如下:
1.int a = 3;
2.double b = 5.0;
3. a = (int)b;
上述代码中首先将 double 类型变量 b 的值强制转换成 int 类型,然后将值赋给 a,但是变量 b 本身的值是没有发生变化的。

在强制类型转换中,如果是将浮点类型的值转换为整数,直接去掉小数点后边的所有数字;而如果是整数类型强制转换为浮点类型时,将在小数点后面补零。

例 2
顾客到超市购物,购买牙膏 2 盒,面巾纸 4 盒。

其中牙膏的价格是 10.9 元,面巾纸的价格是5.8 元,求商品总价格,在计算总价时采用 int 类型的数据进行存储。

实现代码如下:
1.public static void main(String[] args) {
2. float price1 = 10.9f;
3. double price2 = 5.8;
4. int num1 = 2;
5. int num2 = 4;
6. int res2 = (int) (price1 * num1 + price2 * num2);
7. System.out.println("一共付给收银员" + res2 + "元");
8.}
在上述实例中,有 double 类型、float 类型和 int 类型的数据参与运算,其运算结果默认为double 类型,题目要求的结果为 int 类型,因为 int 类型的取值范围要小于 double 类型的取值范围,所以需要进行强制类型转换。

程序执行结果如下图 2 所示:。

相关文档
最新文档