(1)初步学习Java时一些问题的解答

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
    }
}



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值