【小白学java】Test02》》》数据类型&运算符练习题

在这里插入图片描述


【友情链接】➡➡▶【小白学java】D02》》》初学java 基础知识<Java注释&关键字&数据类型>
【友情链接】➡➡▶【小白学java】D03》》》java基础<运算符&表达式>


一、填空题

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__ 。

(1)、按位与运算
按位与运算符"&"是双目运算符。 其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。
(2)、按位或运算
按位或运算符“|”是双目运算符。 其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。
(3)、按位异或运算
按位异或运算符“^”是双目运算符。 其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现。
(4)、求反运算
求反运算符~为单目运算符,具有右结合性。 其功能是对参与运算的数的各二进位按位求反。
(5)、左移运算
左移运算符,是双目运算符。左移n位就是乘以2的n次方。 其功能把,左边的运算数的各二进位全部左移若干位,由,右边的数指定移动的位数,高位丢弃,低位补0。
例: a<<4 指把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。
(6)、右移运算
右移运算符,是双目运算符。右移n位就是除以2的n次方
其功能是把,左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。

8.基本数据类型的类型转换中,要将double类型的常量3.14159赋给为整数类型变量n的语句是______int n=(int)3.14159;_________。

9.八进制整数012表示十进制的___10___,十六进制数0x3C表示十进制的___60_______。

10.一个十进制整数转换成八进制数后是1234,则它转为十六进制数后是______29C____ 。

二进制转八进制
方法为:3位二进制数按权展开相加得到1位八进制数。(注意事项,3位二进制转成八进制是从右到左开始转换,不足时补0)。

二进制转十六进制
方法为:与二进制转八进制方法近似,八进制是取三合一,十六进制是取四合一。(注意事项,4位二进制转成十六进制是从右到左开始转换,不足时补0)。

十进制转八进制或者十六进制有两种方法
第一:间接法—把十进制转成二进制,然后再由二进制转成八进制或者十六进制。这里不再做图片用法解释。
第二:直接法—把十进制转八进制或者十六进制按照除8或者16取余,直到商为0为止。

二、选择题

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

    A constant
    B. flag
    C. a_b
    D. final

解析:finalw为关键字

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

    A. public
    B. 3num
    C. name
    D. _age

解析:public关键字;标识符不能数字开头

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

    A -128 ~ 127
    B. -228 ~128
    C. -255 ~ 256
    D. -255 ~ 255

解析: java中byte占一个字节, 也就是8bit(位), 其中最高位是符号位, 剩下7位用来表示数值.若符号位为0, 则表示为正数,范围为00000000~01111111(补码形式),也就是十进制的0-127. 若符号位为1, 则表示为负数, 范围为10000000~11111111(补码形式), -128~-1, 11111111转换为原码就是10000001,也就是-1.在补码中,为了避免存在"-0",规定10000000为-128, 所以byte的取值范围是-128~127

  1. 下面的代码段中,执行之后i和j的值是( C)。(选择一项)
    int i=1; int j;
    j=i++;

    A 1,1
    B. 1,2
    C. 2,1
    D. 2,2

  2. 下面Java代码的执行结果是( A )。(选择一项)
    public class Test {
    public static void 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

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

    A float f = 11.1;
    B. double d = 5.3E12;
    C. double d = 3.14159;
    D. double d = 3.14D;

  4. 在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;

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

    A 赋值运算符=
    B. 条件运算符 ?=
    C. 逻辑运算符|
    D. 算术运算符+

  6. 有以下方法的定义,请选择该方法的返回类型( D )。(选择一项)
    method(byte x, double y) {
    return (short)x/y*2;
    }

    A byte
    B. short
    C. int
    D. double

  7. 关于以下Java程序中错误行的说明正确的是( B )。(选择一项)
    public class Test2 {
    public static void 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代表同一个变量。( F )

2.在编译Java源程序时,计算机根本不会去识别各个变量名的具体含义,因此命名规范对编写Java程序而言不是必要的,而且有可能会降低编写Java源程序的效率。( F )

3.Java语言中不同数据类型的长度是固定的,不随机器硬件不同而改变。(T )

4.char类型变量可以存储一个Unicode字符,在内存中占2个字节,该字符可以是一个汉字。( T )

5.运算符||和&&既是逻辑运算符,也是位运算符。根据两侧操作数的类型判断是逻辑运算符还是位运算符。( F )

6.^ 是异或位运算符,运算规则是如果两个操作数相同,结果是0,否则结果是1。( T )

7.赋值运算符优先级别低于条件运算符,条件运算符优先级别低于算术运算符。( T )

8.赋值和条件运算符是运算级别最低的两种运算符,都具有自右向左的结合性。( T )

9.整型常量的默认类型是int类型,浮点常量的默认类型是float类型。( F )

10.00101010 & 00010111语句的执行结果为00111111( F )

四、简答题

1.Java是一种强类型语言,说明Java的数据类型分类。

答:
基本数据类型:数值型<整数类型:byte、short、int、long,
浮点类型:float、double,字符型(char),
布尔型(boolean);
引用数据类型:类(class),接口(interface),数组

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

答:i++,先进行运算再自增;++i先自增再进行运算

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

答:
||左边的表达式为真时,右边的表达式不用进行计算了;
|需要考虑俩边的表达式。

4.Java中基本数据类型转换的规则
答:
(1)布尔型和其它基本数据类型之间不能相互转换;
(2)byte型可以转换为short、 int、long、float和double;
(3)short可转换为int、long、float和double;
(4)char可转换为int、long、float和double;
(5)int可转换为long、float和double;
(6)long可转换为float和double;
(7)float可转换为double.

五、编码题

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

//输入一个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)ASCII、ISO8859-1、GB2312、GBK、GB18030、BIG5、UNICODE、ANSI等字符集的特点

友情链接:
http://www.blogjava.net/xcp/archive/2009/10/29/coding2.html

2)常用进制(二进制、八进制、十六进制、十进制)的特点及其转换

友情链接:
https://www.cnblogs.com/summerdata/p/10722144.html

3)源码、反码、补码含义、作用及其转换

友情链接:
https://www.cnblogs.com/summerdata/p/10722359.html

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

00000000 00000000 00000000 1000

        //原文
		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);
  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北慕辰

你的鼓励是小北最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值