Java数据类型转换:强制类型转换 自动类型转换28
- 格式:docx
- 大小:33.41 KB
- 文档页数:4
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 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中含有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。
第一章测试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、⾃动类型转换、强制类型转换、精度损失数据类型--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中,常见的数据类型转换包括基本数据类型之间的转换、引用数据类型之间的转换以及基本数据类型与引用数据类型之间的转换。
下面将依次介绍这些转换方法。
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(方法来获取对应的基本数据类型值。
自考java语言设计知识点Java是一种广泛应用于软件开发领域的编程语言,具有跨平台性、面向对象等优势。
在自考Java语言设计考试中,以下是一些重要的知识点,对于准备参加考试的同学们来说,可以作为复习的参考内容。
一、Java语言基础1. Java的发展历史和特点:介绍Java的起源和发展过程,以及其具有的特点和优势。
2. Java程序的基本结构:了解Java程序的类、主方法和语句等基本结构。
二、数据类型和运算符1. 基本数据类型和包装类:掌握Java中的整型、浮点型、字符型、布尔型等基本数据类型,以及对应的包装类。
2. 强制类型转换和自动类型转换:理解数据类型之间的转换方式,包括强制类型转换和自动类型转换。
3. 运算符:熟悉Java中的算术运算符、关系运算符、逻辑运算符等各种运算符的使用。
三、流程控制1. 条件语句:了解Java中的if语句、switch语句等条件语句的用法。
2. 循环语句:掌握Java中的for循环、while循环、do-while循环等各种循环语句的使用。
3. 分支语句:理解Java中的break语句和continue语句的作用。
四、数组和字符串1. 数组:熟悉Java中的一维数组和多维数组的定义和使用方法。
2. 字符串:了解Java中字符串的常见操作,如字符串的连接、比较、查找、替换等。
五、面向对象编程1. 类和对象:了解类和对象的概念,掌握类的定义和对象的创建方法。
2. 封装性:理解封装性的概念,掌握如何使用访问修饰符来保护类的成员。
3. 继承和多态:熟悉继承和多态的概念,理解子类和父类之间的关系。
4. 抽象类和接口:了解抽象类和接口的概念,掌握抽象类和接口的定义和使用方法。
六、异常处理1. 异常的概念:理解Java中的异常的概念,了解异常产生的原因和处理方式。
2. 异常的处理方式:掌握使用try-catch语句块来捕获和处理异常。
七、文件操作1. 文件的基本操作:了解Java中对文件的读写操作,包括文件的创建、读取、写入和删除等。
选择题第一章java语言概述1在下列概念中, Java语言只保留了 B .A.运算符重载B.方法重载C.指针`D.结构和联合2下列关于Java语言特性的描述中,错误的是___D_.A.支持多线程操作B. JA V A程序与平台无关C. JA V A程序可以直接访问Internet上的对象D. 支持单继承和多继承3下列关于JavaApplication程序在结构上特点的描述中,错误的是 CA. Java程序是由一个或多个类组成的B. 组成Java程序的若干个类可以放在一个文件中,也可以放在多个文件中C. Java程序的文件名要与某个类名相同D. 组成Java程序的多个类中,有且仅有一个主类.4Java 程序经过编译后生成的文件的后缀是 C A. .objB. .exeC. .classD. .java5下列关于运行字节码文件的命令行参数的描述中,正确的是 A A.第一个命令行参数被存放在args[0]中B.第一个命令行参数被存放在args[1]中C.命令行的命令字被存放在args[0]中D.数组args[]的大小与命令行参数的个数无关。
6下列关于java语言面向对象特性描述中,错误的是___C___A.具有封装性B. 支持多态性,允许方法重载C. 支持单继承和多继承D. 支持多接口7下列关于java语言与C++语言异同点的描述中,错误的是______DA. java语言取消了goto语句|B. java语言中取消了指针C. java 语言不支持运算符重载D. java 语言仍保留了结构和联合8列关于JavaApplication程序特点的描述中,错误的是 A A. 该程序只能是一个名字与主类名相同的文件组成B. 该程序中仅有一个主方法,并被包含在某个类中C. 该程序中没有不属于某个类的方法D. 该程序实际上是一个类串9使用Java语言编写的源程序保存时的文件扩展名是( B )。
A.classB.javaC.cppD.txt10Java源文件和编译后的文件扩展名分别为( B )(A) .class和.java(B).java和.class (C).class和 .class (D) .java和.java11Java语言使用的字符码集是( D )(A) ASCII (B) BCD(C) DCB (D) Unicode12下面关于main方法说明正确的是( B )(A) public main(String args[ ])(B) public static void main(String args[ ]) (C) private static void main(String args[ ])(D) void main()13Java application中的主类需包含main方法以下哪项是main方法的正确形参( B )A、String argsB、String args[]C、Char argD、StringBuffer args[]14下列关于Java语言和C++语言之间差别的描述中,不正确的一项是( A )A. Java虽然提供了安全机制,但是还是没有C++安全B. Java的内存管理优于C++的内存管理C. Java没有全局变量,但是C++有全局变量D. Java 没有指针,但是C++的指针最灵活15关于Java语言的内存回收机制,下列选项中最正确的一项是(C )A. Java 程序要求用户必须手工创建一个线程来释放内存 B. Java程序允许用户使用指针来释放内存 C. 内存回收线程负责释放无用内存 D. 内存回收线程不能释放内存对象16下列关于Java语言和C++语言之间差别的描述中,不正确的一项是(A )A. Java虽然提供了安全机制,但是还是没有C++安全B. Java的内存管理优于C++的内存管理C. Java没有全局变量,但是C++有全局变量D. Java 没有指针,但是C++的指针最灵活17Java语言是一种(D)A. 面向机器的编程语言 B. 面向过程的编译型编程语言C. 面向问题的解释型编程语言 D. 面向对象的解释型编程语言18下面的说法正确的是( C )。
JAV基础语法之---数据类型转换数制转换":1、string 转 byte[]String str = "Hello";byte[] srtbyte = str.getBytes();2、byte[] 转 stringbyte[] srtbyte;String res = new String(srtbyte);System.out.println(res);3、设定编码⽅式相互转换String str = "hello";byte[] srtbyte = null;try {srtbyte = str.getBytes("UTF-8");String res = new String(srtbyte,"UTF-8");System.out.println(res);} catch (UnsupportedEncodingException e) {// TODO Auto-generated catch blocke.printStackTrace();}数据类型的转换 Java是⼀种强类型的语⾔,在赋值和参数传递时,都要求类型的匹配。
类型转换有三种情况:⾃动转换、强制转换和使⽤类的⽅法转换。
⾃动转换:往往低精度类型到⾼精度类型能⾃动转换。
如: byte b1=10, b2=20; int b3=b1+b2;强制转换:⾼精度类型到低精度类型必须强制转换。
这时数据可能会丢失部分信息。
如:char key=(char)(12+55) //变量key被赋值为unicode值为67的字符'c'⽅法转换:如 String str = "123"; int a = Integer.parseInt(str); 使⽤Integer类的⽅法parseInt将String转换为对应的整数。
Java面向对象程序设计模拟试题2一、单项选择题(本大题共15小题,每小题1分,共15分)1. JVM是指A. Java开发工具B. Java虚拟机C. Java运行环境D. Java编程接口2. Java字节码文件的扩展名是A. cB. exeC. javaD. class3. 在Java中,byte型变量所占的字节数是A. 1B. 2C. 4D. 84. 给定下面代码段,输出j的值是多少int i = 1, j = 0 ;switch(i) {case 1: j += 6;case 2: j += 1;default: j += 2;}System.out.println(j);A. 2B. 6C. 7D. 95. 给定下面代码段,程序运行结果是public class Test {static void leftshift(int i, int j){i <<= j;}public static void main(String[] args){int i = 4, j = 2;leftshift(i,j);System.out.println("i = "+ i);}}A. i = 1B. i = 2C. i = 3D. i = 46. 执行下列程序段后a和b的值为class AB{int a , b ;public void init(int x){a = x ;int b = 5 ;}public void display(){System.out.println("a = "+a+" b = "+b);}}public class ABTest{public static void main(String[] args){AB ab = new AB();ab.init(6);ab.display() ;}}A. a = 5 b = 5B. a = 0 b = 0C. a = 6 b = 5D. a = 6 b = 07. 下列程序段的运行结果为int [][]x ={{1,2},{3,4,5},{6,7,8,9}};int[][]y = x;System.out.println(y[2][1]);A. 3B. 4C. 6D. 78. 执行下列语句后输出的结果是String s = "COMPUTER";System.out.println(s.indexOf(‘M’));A. 0B. 1C. 2D. 39. 下面程序运行结果为class AA{AA(int a){System.out.print(a);}}class BB extends AA{BB(String s){super(88);System.out.print(s);}}public class ConstructorDemo{public static void main(String[] args){BB b = new BB("hello");}}A. 该程序有编译错误B. 88helloC. hello88D. hello10. 下面程序运行结果为class Super{public int i = 0;public Super(String text){i = 1;}}public class Sub extends Super{public Sub(String text){super(“”);i = 2;}public static void main(String[] args){Sub sub = new Sub("Hello");System.out.println(sub.i);}}A. 该程序有编译错误B. 编译成功输出0C. 编译成功输出1D. 编译成功输出211.下面代码在运行时会产生什么异常int m = 100;System.out.println(m / 0);A. ClassNotFoundExceptionB. MathExceptionC. ArithmeticExceptionD. NullPointerException12.有下列一段代码,执行后输出结果为。
第1章Java入门一、选择题1.下列选项中,不属于Java语言特点的一项是(C )。
(A)分布式(B)安全性(C)编译执行(D)面向对象【解析】Java程序采用解释执行的方法。
在系统编译运行Java程序时,Java编译器将Java程序转化为字节码,在运行时,解释器将编译得到的字节码进行解释执行。
2.在Java语言中,( C )是最基本的元素(A)方法(B)包(C)对象(D)接口【解析】构成Java程序的基本元素类(抽象的对象)。
3.编译一个定义了3个类和10个方法的Java源文件后,会产生( D )个字节码文件扩展名是( D )(A)13个字节码文件,扩展名为.class(B)1个字节码文件,扩展名为.class(C)3个字节码文件,扩展名为.java(D)3个字节码文件,扩展名为.class【解析】源文件中的每一个类编译后都会生成一个字节码文件,字节码文件的扩展名是.class。
4.在创建Applet应用程序时,需要用户考虑问题是(B )。
(A)窗口如何创建(B)绘制的图形在窗口中的位置(C)程序的框架(D)事件处理【解析】创建Applet程序时必须继承系统类Applet,而Applet类中已经包含了如何创建窗口以及事件处理等内容,这类程序的框架也都是固定的,而绘制图形在窗口中的位置则需要由用户确定。
5.Java语言属于(B )种语言(A)面向机器的语言(B)面向对象的语言(C)面向过程的语言(D)面向操作系统的语言【解析】Java语言是一种纯面向对象的语言。
6.下列关于Application和Applet程序的说法中不正确的一项是( B )。
(A)Application使用解释器(B)Application不使用独立的解释器(C)Applet在浏览器中运行(D)Applet必须继承Java的Applet类【解析】Application程序包含main()方法,它是一种独立执行的程序,因此必须使用独立的解释器解释执行。
Java基本数据类型有哪些Java基本数据类型有哪些java是一种强类型语言,第一次申明变量必须说明数据类型,第一次变量赋值称为变量的初始化。
ava基本数据类型有哪些?下面是店铺为大家收集的Java基本数据类型有哪些,仅供参考,欢迎大家阅读。
1.Java的简单类型及其封装器Java基本类型共有八种,基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。
数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double。
JAVA中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或者操作系统的改变而改变。
实际上,JAVA中还存在另外一种基本类型void,它也有对应的包装类 ng.Void,不过我们无法直接对它们进行操作。
8 中类型表示范围如下:byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间。
short:16位,最大数据存储量是65536,数据范围是-32768~32767之间。
int:32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。
long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。
float:32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。
double:64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。
boolean:只有true和false两个取值。
char:16位,存储Unicode码,用单引号赋值。
Java决定了每种简单类型的大小。
这些大小并不随着机器结构的变化而变化。
这种大小的不可更改正是Java程序具有很强移植能力的原因之一。
下表列出了Java中定义的简单类型、占用二进制位数及对应的封装器类。
分类试题库——JAVA语言基础(含答案)一选择题1. 下列java标识符,错误的是()_sys_varl$changeUser_name1_file下列不属于简单数据类型的是()整数类型类符点数类型布尔类型下列属于JAVA关键词的是()TRUEgotofloatNULL下列声明和赋值语句错误的是double w=3.1415;String strl=”bye”;float z=6.74567boolean truth=true;java中,八进制数以______开头。
0x0X08自定义类型转换是由按优先关系从低级数据转换为高级数据,优先次序为()char-int-long-float-doubleint-long-float-double-charlong-float-int-double-char以上都不对在java中,Integer.MAX_VALUE表示浮点类型最大值整数类型最大值长整型最大值以上说法都不对JAVA中,数据类型值中不可能出现的符号是()dfe/下列表示单引号的是()‘\\’\\\\’‘\\10. 下列语句片断中,four得值为:()int three=3;char one=‘1’char four=(char)(three+one);3131411. 下列不属于整型变量的类型是byteshortfloatlong12. int类型整型变量在内存中的位数为816326413. 下列数据类型转换,必须进行强制类型转换的是byte→intshort→longfloat→doubleint→char14. java中,用()关键字定义常量final#definefloatconst15. 关于变量的作用范围,下列说法错误的是异常处理参数作用域为整个类局部变量作用于声明该变量的方法代码段类变量作用于声明该变量的类方法参数作用于传递到方法内代码段16. 下列属于条件运算符的是+?:&&>>17. 下列程序test类中的变量c的最后结果为public class test{public static void main(String args[]) {int a=10;int b;int c;if(a>50){b=9;}c=b+a;}}1019编译出错18. 下列程序片断的执行,说法正确的是public class test{public static void main(String args[]){byte b=100;int i=b;int a=2000;b=a;System.out.println(b);}}b的值为100b的值为2000第六行出错第八行出错19. 00101010(&)00010111语句的执行结果为0000001011111111001111111100000020. 已知i为整形变量,关于一元运算++i和i++,下列说法正确的是A. ++i运算将出错B. 在任何情况下运行程序结果都一样C. 在任何情况下运行程序结果都不一样D. 在任何情况下变量i的值都增121. 在java中语句:37.2%10的运算结果为A. 7.2B. 7C. 3D. 0.222. 在java语句中,运算符&&实现A. 逻辑或B. 逻辑与C. 逻辑非D. 逻辑相等23. 在java语句中,位运算操作数只能为整型或()数据A.实型B.字符型C.布尔型D.字符串型00101010(|)00010111语句的执行结果为A. 00000000B. 11111111C. 00111111D. 1100000025. ~0010101语句的执行结果为A. 1101010B. 0010101C. 11111111D. 0000000026. 复合语句用()括起来的一段代码。
在赋值的信息可能丢失的地方,编译器需要程序员用类型转换(type cast)的方法确认赋值。
Java 中的类型转换分成:强制类型转换、自动升级类型转换和后面将会学习到的向上造型。
1:强制类型转换把某种类型强制转换成另外一种类型就叫做强制类型转换。
例如,可以将一个long 值“挤压”到一个int 变量中。
显式转型做法如下:long bigValue = 99L;int squashed = (int)(bigValue);在上述程序中,期待的目标类型被放置在圆括号中,并被当作表达式的前缀,该表达式必须被更改。
一般来讲,建议用圆括号将需要转型的全部表达式封闭。
否则,转型操作的优先级可能引起问题。
注意:强制类型转换只能用在原本就是某个类型,但是被表示成了另外一种类型的时候,可以把它强制转换回来。
强制转换并不能在任意的类型间进行转换。
比如上面的例子:99 这个数本来就是一个int 的数,但是它通过在后面添加L 来表示成了一个long 型的值,所以它才能够通过强制转换来转换回int 类型。
2:升级和表达式的类型转换当没有信息丢失时,变量可被自动升级为一个较长的形式(如:int 至long 的升级)long bigval = 6; //6 是int 类型,OKint smallval = 99L; //99L 是long 型,非法double z = 12.414F; //12.414F 是float 型,OKfloat z1 = 12.414; //12.414 是double 型,非法一般来讲,如果变量类型至少和表达式类型一样大(位数相同),则你可认为表达式是赋值兼容的。
3:表达式的升级类型转换对+ 运算符来说,当两个操作数是原始数据类型时,其结果至少有一个int,并且有一个通过提升操作数到结果类型,或通过提升结果至一个较宽类型操作数而计算的值,这可能会导致溢出或精度丢失。
例如:short a,b,ca=1;b=2;c= a+b;上述程序会出错是因为在执行“+”操作前,a 和b 会从short 提升至int,两个int相加的结果也是int,然后把一个int 的值赋值给c,但是c 是short 型的,所以出错。
第1章Java语言概述选择题1-1 在下列概念中,Java语言只保留了(B)A. 运算符重载B. 方法重载C. 指针D. 结构和联合1-2 下列关于Java语言特性的描述中,错误的是(D)A. 支持多线程操作B. Java程序与平台无关C. Java和程序可以直接访问Internet上的对象D. 支持单继承和多继承1-3 下列关于Java Application程序在结构上的特点的中,错误的是(C)A. Java程序是由一个或多个类组成的B. 组成Java程序的若干个类可以放在一个文件中,也可以放在多个文件中C. Java程序的文件名要与某个类名相同D. 组成Java程序的多个类中,有且仅有一个主类1-4 Java程序经过编译后生成的文件的后缀是(C)A. .objB. .exeC. .classD. .java1-5 下列关于运行字节码文件的命令行参数的描述中,正确的是(A)A. 第一个命令行参数(紧跟命令字的参数)被存放在args[0]中B. 第一个命令行参数被存放在args[1]中C. 命令行的命令字被存放在args[0]中D.数组args[]的大小与命令行参数的个数无关判断题1-1JavaC++的语言之前问世的。
(错)1-2Java语言具有较好的安全性和可移植性及与平台无关等特性。
(对)1-3Java语言中取消了联合的概念,保留了结构概念。
(错)1-4Java语言中数据类型占内在字节数与平台无关。
(对)1-5Java语言中可用下标和指针两种方式表示数组元素。
(错)1-6Java语言的源程序不是编译型的,而是编译解释型的。
(对)1-7操作系统中进程和线程两个概念是没有区别的。
(错)1-8Java语言既是面向对象的又是面向网络的高级语言。
(对)1-9Java程序分为两大类:一类是Application程序,另一类是Applet程序。
前者又称Java应用程序,后者又称为Java小应用程序。
(对)1-10Java Application程序是由多个文件组成的,其中可以有也可以没有主文件。
Java中byte、short、char、int、long运算时⾃动类型转化问题--------------------------------------------------------------------------------------------------★★⾃动(隐式、默认)类型转换与强制(显式)类型转换★★ 1) boolean类型不参与转换 2) 默认转换 A:从⼩到⼤ B:byte,short,char --» int --» long --» float --» double C:byte,short,char之间不相互转换,直接转成int类型参与运算。
3) 强制转换 A:从⼤到⼩ B:可能会有精度的损失,⼀般不建议这样使⽤。
C:格式: ⽬标数据类型变量名 = (⽬标数据类型) (被转换的数据);★★表达式的式值★★int a = 10;int b = 20;int c = (a = b); //赋值式本⾝也是表达式,所以它也有式值--------------------------------------------------------------------------------------------------⼤家都知道,在进⾏运算时,Java会隐式的⾃动进⾏类型转化。
那么有哪些情况会进⾏转化呢?总结如下:(⼀)算术运算符1) 单⽬运算符:+(取正)、-(取负)、 ++(⾃增1)、 --(⾃减1)a) +(取正)、-(取负) 当操作数是byte,short,char时,会⾃动转化为int类型;返回结果为int。
当操作数是int,long时,不转化,原来是啥类型,还是啥类型。
b) ++(⾃增1)、 --(⾃减1) 不管操作数是啥类型,不转化。
2) 双⽬运算符:+、 -、 *、 /、 %(取余) 当两个操作数中没有long类型时,两个操作数中⾮int类型会先⾃动转换为int类型,再参与运算,返回结果为int; 当两个操作数中含有long类型时,两个操作数中⾮long类型会⾃动转换为long类型,再参与运算,返回结果为long;(⼆)位运算符1) &(按位与)、|(按位或)、^(按位异或) 当两个操作数中没有long类型时,两个操作数中⾮int类型会先⾃动转换为int类型,再参与运算,返回结果为int; 当两个操作数中含有long类型时,两个操作数中⾮long类型会⾃动转换为long类型,再参与运算,返回结果为long;2) ~(按位⾮) 当操作数是byte,short,char时,会⾃动转化为int类型;返回结果为int。
数据类型的转换是在所赋值的数值类型和被变量接收的数据类型不一致时发生的,它需要从一种数据类型转换成另一种数据类型。
数据类型的转换可以分为隐式转换(自动类型转换)和显式转换(强制类型转换)两种。
隐式转换(自动类型转换)
如果以下 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 所示:。