欢迎来到天天文库
浏览记录
ID:61506908
大小:16.77 KB
页数:11页
时间:2021-02-08
《Java初学者的30个常见问题.docx》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、Java初学者的30个常见问题 本文回答了30个Java入门级初学者的常见问题。我可以用%除以一个小数吗?a+=b和a=a+b的效果有区别吗?声明一个数组为什么需要花费大量时间?为什么Java库不用随机pivot方式的快速排序? 1.2基本数据类型 Q.为什么-0/3结果是0,而-0.0/3.0结果是-0.0?(注意后边的结果0带负号) A.在Java里,整数是用补码表示的。在补码中0只有一种表示方法。另一方面,浮点数则是用IEEE标准表示的,对于0有两种表示方法,0和-0。 Q.我可以
2、用%除以一个小数吗? A.当然可以。比如,如果angle是一个非负数,那么angle%(2*Math.PI)就会把angle转换到0到2π之间。 Q.当ab都是基本类型变量时,a+=b和a=a+b的效果有区别吗? A.当a和b的类型不同时,那两条语句的效果就可能有区别。a+=b等同于a=(int)(a+b),这种情况下可以是a是int型,b是float型。但是同等情况下a=a+b就会编译报错。 1.3条件语句和循环语句 Q.为什么判断字符串相等不能使用==? A.这反映了基础类型(int
3、,double,boolean)和引用类型(String)的区别。 Q.有没有在什么情况下,一条语句块的花括号不能省略的? A.在下面的例子中,第一段代码是合法的,第二段代码会引发编译错误。从技术角度说,那一条语句是一个变量声明,而不是语句,所以会报错。 1.//legal 2.for(inti=0;i<=N;i++){ 3.intx=5; 4.} 5. 6.//illegal 7.for(inti=0;i<=N;i++) 8.intx=5; Q.在下面的两段代码里,有没有情况
4、,它们的效果不一样? 1.for(;){ 2. 3.} 4. 5.; 6.while(){ 7. 8. 9.} A.有的。如果在循环块里使用continue语句。在for的代码里,计数器会加一;而在while的代码里,因为被continue略过了,计数器不加一。 1.4数组
5、Q.某些Java开发人员使用inta[]而不是int[]a去声明一个数组。这两者有什么区别? A.在Java中这两种用法都是合法的,他们的作用都是一样的。前者是在C中的定义数组的方法。后者是JAVA推荐的方法,因为它的写法int[]更能表明这是一个int的数组。 Q.为什么数组下标从0开始而不是从1开始? A.这种传统起源于机器语言的编程方法。在机器语言中,数组下标被用来计算元素位置与第一个元素之间的偏移量。如果从1开始的话,计算偏移时还需要做一次减法运算,那是种浪费。 Q.如果我用负数作为
6、数组下标会发生什么事? A.下标小于0或者大于等于数组长度,JAVA运行时会抛出ArrayIndexOutOfBoundsException异常,并且中止程序运行。 Q.使用数组时还有其他需要注意的陷阱吗? A.需要记住,JAVA在你创建一个数组时会去初始化它,所以声明一个数组需要O(N)的时间。 Q.既然a[]是一个数组,为什么System.out.println(a)会打印出一个16进制的数,就像@f62373这样,而不是打印出数组的元素? A.好问题。这条语句打印出的是数组在内存中的
7、地址,不幸的是,在绝大多数情况下,这不是你需要的。 1.5输入输出语句 Q.我可以从标准input中重新读一次数据吗? A.不可以,你只能读一次。 Q.怎样输入end-of-file(eof)符号? A.操作系统自动包括它了。 Q.使用printf()时还有哪些用法? A.对于整数来说,使用o输出八进制,使用x输出十六进制。对于浮点数来说,使用e或者g输出科学计数法形式。 Q.行结束的符号是什么? A.不同的文件系统使用了不同的符号。在Unix系统上,新行的符号是'';在Win
8、dows系统上,每一行都有两个字符组成的字符串终结"r";在Macs系统上,终结符号是"r"。如果要打印行号,可以使用System.out.println(),或者使用下面的语句得到当前操作系统下的行结束符: 1.StringNEWLINE=System.getProperty("line.separator"); Q.下面两种写法,哪一种更有效率? 1.Strings; 2.while(!StdIn.isEmpty()){while(!StdIn
此文档下载收益归作者所有