数据类型和运算符作业

  • 填空题
  1. Java语言规定标识符由字母、下划线、美元符号和数字组成,并且第一个字符不能是     数字          
  2. Java中整型变量有byte、short、int和long四种,不同类型的整数变量在内存中分配的字节数不同,数值范围也不同。对于int型变量,内存分配 4  个字节。
  3. 在Java中浮点型变量有float和double两种,对于float型变量,内存分配4个字节,尾数可精确到7位有效数字,对于double型变量,内存分配8 个字节。
  4. char c=’a’;System.out.println(c+1);运行结果为:98
  5. ____&&_____是短路与运算符,如果左侧表达式的计算结果是false,右侧表达式将不再进行计算。
  6. 下面的语句是声明一个变量并赋值:boolean b1=5!=8; b1的值是____true______。 
  7. 使用位运算符来实现运算效率最高,所以最有效率的方法算出2乘以8等于多少的语句是  2<<3
  8. 基本数据类型的类型转换中,要将double类型的常量3.14159赋给为整数类型变量n的语句是_______int n =(int)3.14159_;_____________。
  9. 八进制整数012表示十进制的___10____,十六进制数0x3C表示十进制的___60____。
  10. 一个十进制整数转换成八进制数后是1234,则它转为十六进制数后是29c
  • 选择题

1.

Java中,以下错误的变量名是(D )。(选择一项)





A

constant


B.

flag


C.

a_b


D.

final

2.

以下选项中属于合法的Java标识符的是( CD 。(选择项)





A.

public


B.

3num


C.

name


D.

_age

3.

Java中,byte数据类型的取值范围是( A )。(选择一项)





A

-128 ~ 127


B.

-228 ~128


C.

-255 ~ 256


D.

-255 ~ 255

4.

下面的代码段中,执行之后ij的值是( C)。(选择一项)


int i=1;   intj;

j=i++;





A

1,1


B.

1,2


C.

2,1


D.

2,2

5.

下面Java代码的执行结果是( A   )。(选择一项)


publicclassTest {

         publicstaticvoid main(String args[]) {

                   System.out.println(100 % 3);

                   System.out.println(100%3.0);

         }

}





A

1  1.0


B.

1   1


C.

1.0  1.0


D.

33   33.3

6.

下面的赋值语句中错误的是(  A  )。(选择一项)





A

float f = 11.1;   


B.

double d = 5.3E12;


C.

double d = 3.14159;


D.

double d = 3.14D;

7.

Java中,下面( AB)语句能正确通过编译。(选择两项)





A

System.out.println(1+1);     


B.

char i =2+'2';

System.out.println(i);


C.

String s="on"+'one';


D.

int b=255.0;

8.

以下Java运算符中优先级别最低的两个选项是(AB)。(选择二项)





A

赋值运算符=


B.

条件运算符 ?=


C.

逻辑运算符|


D.

算术运算符+

9.

有以下方法的定义,请选择该方法的返回类型(D )。(选择一项)


            method(byte x, double y) {

         return  (short)x/y*2;

}





A

byte


B.

short


C.

int


D.

double

10.

关于以下Java程序中错误行的说明正确的是(B)。(选择一项)


publicclass Test2 {

         publicstaticvoid main(String[] args) {

                   short s1=1;   //1

                   s1=s1+1;     //2

                  s1+=1;       //3

                   System.out.println(s1);

         }

}





A

1行错误


B.

2行错误


C.

3行错误


D.

1行,2行,3行都错误

  • 判断题
  1. Java中变量名不区分大小写,number和NuMbEr代表同一个变量。(  X
  2. 在编译Java源程序时,计算机根本不会去识别各个变量名的具体含义,因此命名规范对编写Java程序而言不是必要的,而且有可能会降低编写Java源程序的效率。( X
  3. Java语言中不同数据类型的长度是固定的,不随机器硬件不同而改变。(√ )
  4. char类型变量可以存储一个Unicode字符,在内存中占2个字节,该字符可以是一个汉字。( √)
  5. 运算符||和&&既是逻辑运算符,也是位运算符。根据两侧操作数的类型判断是逻辑运算符还是位运算符。(X)
  6. ^ 是异或位运算符,运算规则是如果两个操作数相同,结果是0,否则结果是1。(√)
  7. 赋值运算符优先级别低于条件运算符,条件运算符优先级别低于算术运算符。(√)
  8. 赋值和条件运算符是运算级别最低的两种运算符,都具有自右向左的结合性。(√)
  9. 整型常量的默认类型是int类型,浮点常量的默认类型是float类型。(X)
  10. 00101010 & 00010111语句的执行结果为00111111(X)
  • 简答题
  • 1.Java是一种强类型语言,说明Java的数据类型分类。

整数类型(byte、short、int、LONG、),浮点型(float、double),字符型(char),

布尔型(boolean)。

2.i++和++i的异同之处

不同之处:++i 先自增,后赋值。i++ 相反。

相同之处:都要发生自增。

3.运算符||和|的异同之处    

不同之处:||在运算中,如果它左侧的表达式为“true”时,就不再计算右边的表达式了,直接返回到“true”。|在运算中,是在等两侧的表达式都计算出结果以后,在判断最终结果的。

相同之处:逻辑意义相同。

4.Java中基本数据类型转换的规则

类型转换包括(int short byte long float double char),不包括布尔类型。转换方向:byte,short,char-----int-----long-----float-----double。在算数运算中,先扫描整个表达式,发现宽度最大的类型,所有的数据都转换成该类型,在运算。在赋值转换中,左>右,自动转换。左=右,不转换。左<右,强制转换。

  • 编码题
  1. 输入自己的名字,年龄和性别,分别用不同的变量接收,并将输入的信息做输出。
import java.util.Scanner;
public class TestPerson {
       public static void main(String[] args) {
              System.out.println("Please input your name here:");
              Scanner input = new Scanner(System.in);
              String Name = (String) input.next();
              System.out.println("Please input your age here:");
              int age = input.nextInt();
              System.out.println("Please input your gender here:");
              String gender = input.next();
              System.out.println("The computer recorded that :");
              System.out.println("Your nanme is:" + Name);
              System.out.println("Your age is:" + age);
              System.out.println("Your gender is:" + gender);
       }

}

2.输入圆形半径,求圆形的周长和圆形的面积,并将结果输出。

java初级实训指导书 java实训作业答案_Java

 

import java.util.Scanner;
public class TestCircle {
       public static void main(String[] args) {
              // 定义圆周率
              final double PI = 3.14;
              Scanner input = new Scanner(System.in);
              // 输入半径
              System.out.println("请输入圆的半径:");
              // 计算周长和面积
              float r = input.nextFloat();
              double c = 2 * PI * r;
              double s = PI * r * r;
              // 输出周长和面积
              System.out.println("该圆的半径为:R=" + r);
              System.out.println("该圆的周长为:C=" + 2 + "*" + PI + "*" + r + "=" + c);
              System.out.println("该圆的面积为:S=" + PI + "*" + r + "*" + r + "=" + s);
       }
}

3.银行利率表如下表所示,请计算存款10000元,活期1年、活期2年,定期1年,定期2年后的本息合计。

java初级实训指导书 java实训作业答案_java_02

 

结果如下图所示。(结果四舍五入,不保留小数位。使用Math.round(double d)实现)

java初级实训指导书 java实训作业答案_后端_03

public class TestDeposit {
public static void main(String[] args) {
              //给出本金并输出
              int money = 10000;
              System.out.println("本金:"+money);
              //计算活期1年本金并输出
              double result1 = money*(1+0.35/100);
              System.out.println("活期1年本金总计:"+Math.round(result1));
              //计算定期1年本金并输出
              double result2 = money*(1+1.50/100);
              System.out.println("定期1年本金总计:"+Math.round(result2));
              //计算活期2年本金并输出
              double result3 = money*(1+0.35/100*2);
              System.out.println("活期2年本金总计:"+Math.round(result3));
              //计算定期2年本金并输出
              double result4 = money*(1+2.10/100*2);
              System.out.println("定期2年本金总计:"+Math.round(result4));
       }
}

4.某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。结果如图所示。

java初级实训指导书 java实训作业答案_后端_04

 

public class TestEncryption {
       public static void main(String[] args) {
              //输入一个4位整数
              Scanner s = new Scanner(System.in);
              System.out.print("请输入一个4位正整数:");
              int num = s.nextInt();          
              //获取各个位上的数
              int bit4 = (num / 1000); // 取千位的数字
              int bit3 = (num / 100) % 10; // 取百位的数字
              int bit2 = (num / 10) % 10; // 取十位的数字
              int bit1 = num % 10; // 取个位的数字
              //每位数字加5            
              bit4 = (bit4+5)%10;
              bit3 = (bit3+5)%10;
              bit2 = (bit2+5)%10;
              bit1 = (bit1+5)%10;
              //交换第一位和第四位
              int  temp;
              temp = bit4;
bit4 = bit1;
              bit1 = temp;
              //交换第二位和第三位
              temp = bit2;
              bit2 = bit3;
              bit3 = temp;
              // 输出加密后数字
              //System.out.println("加密后的数字为:"+bit4+bit3+bit2+bit1);
              int ennum = bit4*1000+bit3*100+bit2*10+bit1;
              System.out.println("加密后的数字为:"+ennum);
             
       }
}


  • 可选题


  1. 网上查询资料,了解如下内容
    1. 源码、反码、补码含义、作用及其转换
    2. 常用进制(二进制、八进制、十六进制、十进制)的特点及其转换
    3. ASCII、ISO8859-1、GB2312、GBK、GB18030、BIG5、UNICODE、ANSI等字符集的特点



2.利用”异或”运算的性质,对几个字符进行加密并输出密文,然后再解密。加密算法是:密钥是字符’8’,明文的每个字符和密钥进行异或运算,得到密文。密钥和密文的每个字符再次进行异或运算,重新得到明文。结果如图所示。

java初级实训指导书 java实训作业答案_后端_05

 

public class TestEncryption2 {
       public static void main(String args[]) {
              //原文
              char a1 = '十', a2 = '点', a3 = '进', a4 = '攻';
              System.out.println("加密前原文:" + a1 + a2 + a3 + a4);
              //加密
              char secret = '8';
              a1 = (char) (a1 ^ secret);
              a2 = (char) (a2 ^ secret);
              a3 = (char) (a3 ^ secret);
              a4 = (char) (a4 ^ secret);            
              System.out.println("密文:" + a1 + a2 + a3 + a4);
              //解密
              a1 = (char) (a1 ^ secret);
              a2 = (char) (a2 ^ secret);
              a3 = (char) (a3 ^ secret);
              a4 = (char) (a4 ^ secret);
              System.out.println("解密后原文:" + a1 + a2 + a3 + a4);
       }
}