1.DOS下,dir和cd分别表示什么?
dir:查看某个目录下的子目录和文件;
cd:改变当前目录。
2.为什么采用Java_HOME的方式配置环境变量较好?
便于Java_HOME 路径的重用,避免JDK安装路径变化而修改多个环境变量。
3.public class 的类名必须和文件名保持一致吗?
public class 的类名必须和文件名保持一致。
4.system.out.print("hi");可以顺利执行吗?
不能,Java严格区分大小写,要将system改为System。
5.一个Java源文件可以写多个class吗?编译后,会不会生成多个class文件?
一个Java源文件可以写多个class,编译后会生成多个class文件。
6.编程时为什么要写注释?注释的类型,多行注释能被嵌套使用?
注释是程序员为读者作的说明,是提高程序可读性的一种手段;注释同时也是调试代码的一种手段,可以对某些不要执行的代码进行注释。
Java中,注释分为单行注释、多行注释和文档注释三种类型。
多行注释不能嵌套使用。
7.标识符的作用是什么?
用作给变量、类和方法命名。
8.Java中有没有goto语句?有没有goto关键字?
没有goto语句,有goto关键字。
9.位、字节、字符的概念及其计数范围
概念 | 计数范围 | |
位 | 计算机存储信息的基本单位,代表一个二进制数位 | 0或1 |
字节 | 8个连续的二进制位为一个字节,可以存放1个西文字符的编码 | -128~127 |
字符 | 单引号用来表示字符常量,例如:'A'、'张' | 0~65535之间的编码 |
10.整型常量默认是什么类型?byte,short,int,long类型分别占用几个字节,表述范围多大??
整型常量默认为int
byte: 1个字节 -128~127
short: 2个字节 -2^15~2^15-1
int: 4个字节 -2^31~2^31-1
long: 8个字节 -2^63~2^63-1
11.浮点型常量默认是什么类型?float、double分别占几个字节?3.14用科学计数法如何表示?
浮点型常量默认为double型,例:double b = 3.14; float c = 3.14F;或float c = 3.14f;
float占4个字节,double占8个字节。
3.14用科学记数法表示为314E-2
12.浮点数能用于比较吗?下面会打印出什么结果?
float d1 = 423423423f;
float d2 = d1+1;
if(d1 == d2) {
System.out.println("d1 == d2");
}else {
System.out.println("d1 != d2");
}
打印结果:d1 == d2
float类型的数据在内存中的存储形式为科学计数法,且有效位为7位,则d1为4.2342342E7,d2用科学记数法表示同样为4.2342342E7,因此d1 == d2
13.字符型变量几个字节?char c = "d";这种写法对不对?
字符型变量占2个字节,
这种写法不对,字符型应该用单引号,应该改为char c = 'd';
14.布尔型变量占一位还是一个字节? if(b == true)这种写法好不好?
不好,但是正确的,为了避免不小心写成if(b = true),一般写成 if(b)
15.常量的声明使用哪个关键字?常量的命名规则是什么?
常量声明用final,
常量名全部由大写字母组成,单词间由下划线界定。
16.使用Scanner接收键盘输入,是否一定要加import java.util.*;?
需要导包,也可以写成import java.util.Scanner;
17.类名的命名规则是?方法名、变量名的命名规则是否一致?
类名的命名规则:每个英文单词首字母都大写。
方法名、变量名的命名规则,第一个单词首字母小写,从第二个单词后,每个单词的首字母大写。
18.引用类型占用几个字节?
引用类型占用4个字节,用来存储对象的引用。
19.算数运算符中的类型提升是怎么回事?int a=3;long b=3;a+b返回什么类型?
类型提升指的是自动类型转换;所以,a+b返回long类型
20.++i和i++的异同之处?
相同:都是变量i自增1,i++和++i作为一条单独的语句使用时没有区别;
不同:i++是先使用i的值进行其他运算,然后再自增1;
++i是先自增1,然后再使用i的值进行其他运算
21.逻辑运算符|、&、!、^的含义及其运算规则?
|或:只要有一个为true,则直接返回true,
&与:只要有一个为false,则直接返回false,
!非:如果为true则返回false,如果为false则返回true,
^异或:如果两个操作数相同,则返回false,如果两个操作数不同,则返回true。
22.运算符||和|的不同之处。
||短路或:从左到右计算,如果符号左边的操作数为true,则不会继续计,直接返回true;如果左边的为false,则需继续计算。
|逻辑或:操作数左右两边的操作数都需要计算,不会发生短路。
||只是逻辑运算符,|还可以是位运算符中的按位或符号。
(&&短路与和&逻辑与与上述类似)
23.5*4最快的运算方式是?
5<<2
24.'a'+3+4和"a"+3+4返回的结果分别是什么?什么情况下 + 会变成字符串连接符?
'a'+3+4:char比int小,char强转为int,'a'表示97,所以'a'+3+4返回104
"a"+3+4:结果返回a34
当 + 的某一边为String类型,+变为字符连接符
25.4&5,4|5的结果分别为多少?4&&5这个操作可行吗?
4的二进制表示为00000000 00000000 00000000 00000100
5的二进制表示为00000000 00000000 00000000 00000101
4&5的结果为 00000000 00000000 00000000 00000100 即4
4|5的结果为 00000000 00000000 00000000 00000101 即5
4&&5这个操作不可行,因为&&要求左右两边为Boolean类型表达式
26.int能否自动转换成byte、short、char?long能自动转成int和float吗?布尔类型能否自动转成int?
int不能能自动转换成byte、short、char,需要强制类型转换。
long不能自动转成int,可以自动转成float。(long型虽然占用8个字节,但是由于要非常严密精确的表达每一位数,
能够表达的数的范围,反倒没有占用4个字节的float型能够表达的数据范围大)
boolean不能自动转成int,因为类型不匹配。
27.自动转型里的容量大小是指什么?强制转型可能会丢失数据吗?
容量大小指的是不同数据类型的存储数据范围。
强制转型可能会丢失数据。
补充:
八大基本类型转换:
package com.review01.dataType;
/**1.整型默认为int,浮点型默认为double。
* 2.boolean类型不能与其他基本类型相互转换;byte、short、char之间也不能相互转。
* 3.自动转化:容量小的可以自动转化为容量大的,byte,short,char->int->long->float->double。
* 4.容量大的需要经过强转才行,并且有可能损失精,2中的情况是不允许强转的。。
* 5. float f = 0.1L和float f = (float)0.1;两种写法都可以,但是两个表达的意思完全不同,0.1f本身只占4个字节,而(float)0.1表示把8个字节的double强转为4个字节的float。
*
* 注意:容量大小不是指所占字节多少,而是指表述范围。如:long占8个字节,可以自动转为float,因为float的表述范围很大。
*/
public class TypeConvert {
public static void main(String[] args) {
int i=1, j;
i = i/10; // 1/10=0,还是int,不用转换数据类型
i = (int)(i*0.1); //0.1是double类型,i*0.1也就是double,结果要强转为int
//j = j+10; //局部变量要先赋值才能用
//float f1 = 0.1; //0.1是double类型,这里要么在0.1后加f,要么强转为float
float f1 = 0.1f;//或float f1 = (float)0.1;
float f2 = 123;
float f3 = f1+f2;
float f4 = (float)(f1+f2*0.1); //必须强转
long l1 = 12345678;
//long l2 = 8888888888; //超出int的表述范围,加L或者强转
long l2 = 8888888888l; //或long l2 = (long)8888888888;
double d1 = 2e20 ,d2=124;
double d = d1*i + i;
float f = (float)(d1*5+d2);
byte b1 = 1, b2 = 2;
byte b = (byte)(b1 - b2); //b1、b2都是int,相减还是int,赋给byte要强转
System.out.println("b1-b2="+b);
byte b3 = (byte)129; //这里虽然可以强转,但是会损失精度
System.out.println("b3="+b3);//b3=-127
char c1 = 'A', c2 = 26; //ASCII吗
System.out.println("c1="+c1+"\t c2="+c2); //c1=A c2=
char c = (char)(c1+c2-1);//将int强转为char
System.out.println("c="+c); //c=Z,Z的ASCII码是65
}
}