数加科技 学习大数据第二天的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等于多少的语句是 int a = 2,b; b = a<<3; 。
8.基本数据类型的类型转换中,要将double类型的常量3.14159赋给为整数类型变量n的语句是___double d = 3.14159; int n = (int) d;___________。
9.八进制整数012表示十进制的
10___,十六进制数0x3C表示十进制的__60___。
10.一个十进制整数转换成八进制数后是1234,则它转为十六进制数后是 29c 。

二、选择题

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

    A constant
    B. flag
    C. a_b
    D. final

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

    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. 下面的代码段中,执行之后i和j的值是( C )。(选择一项)
    int i=1; int j;
    j=i++;

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

  5. 下面Java代码的执行结果是( C )。(选择一项)
    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

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

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

  7. 在Java中,下面( A B )语句能正确通过编译。(选择两项)

    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运算符中优先级别最低的两个选项是( A B )。(选择二项)

    A 赋值运算符= 4
    B. 条件运算符 ?: 3
    C. 逻辑运算符| 2
    D. 算术运算符+ 1

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

四、简答题
1.Java是一种强类型语言,说明Java的数据类型分类。
Byte、int、double、float、char、String、long、short
2.i++和++i的异同之处
相同点:最终都会将i加1
不同点:i++变量执行后加1
++i变量执行前加1
3.运算符||和|的异同之处
相同点:||和|都可以用作逻辑或的运算符,表示逻辑与(or),只要有一方为true, 则结果为true。否则,当运算符两边的表达式的结果都为false时,整个运算结果 才为false。
区别:”||“执行过程中会出现“短路”的现象。即若符号”||”前的表达式如果 为true,那么后面的那个表达式将不会被执行,直接返回true。

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;

五、编码题
(1)输入自己的名字,年龄和性别,分别用不同的变量接收,并将输入的信息做输出。
Scanner sc = new Scanner(System.in);
System.out.println(“Please your name here:”);
String name = sc.next();
System.out.println(“Please your age here:”);
int age = sc.nextInt();
System.out.println(“Please your sex here:”);
String sex = sc.next();
System.out.println("Your name is "+name);
System.out.println("Your age is "+age);
System.out.println("Your sex is "+sex);

图1 运行截图

(2)输入圆形半径,求圆形的周长和圆形的面积,并将结果输出。
//求面积
static double seekarea(double r) {
double s;
s = 3.14 * r * r;
return s;
}

//求周长
static double seekPerimeter(double r) {
    double c;
    c = 2 * 3.14 * r;
    return c;
}

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("输入圆形半径:");
    double r = sc.nextDouble();
    double s = seekarea(r);
    double c = seekPerimeter(r);
    System.out.println("圆形的半径为:"+r);
    System.out.println("圆形的周长为:"+c);
    System.out.println("圆形的面积为:"+s);
}

图2 运行截图
1.某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。结果如图所示。
static int encryption(int number) {
int cnumber;
int ge = (number % 10 + 5) % 10;
int shi = (number / 10 % 10 + 5) % 10;
int bai = (number / 10 / 10 % 10 + 5) % 10;
int qian = (number / 10 / 10 / 10 % 10 + 5) % 10;
cnumber = qian * 1 + bai * 10 + shi * 100 + ge * 1000;
return cnumber;
}

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入一个4位正整数:");
    int number = sc.nextInt();
    int cnumber;//转换后的电话数据
    if (number >= 1000 & number <= 9999) {
        cnumber = encryption(number);
        System.out.println("加密后的数字为:" + cnumber);
    } else {
        System.out.println("输入错误!!!");
    }
}

六、可选题

1.网上查询资料,了解如下内容
1)ASCII、ISO8859-1、GB2312、GBK、GB18030、BIG5、UNICODE、ANSI等字符集的特点
ASCII码:用7位表示,只能表示128个字符,0~31表示控制字符如回车、退格、删除等;32~126表示打印字符即可以通过键盘输入并且能显示出来的字符,其中48~57为0到9十个阿拉伯数字,65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等,具体可以参考ASCII标准表。
ISO8859-1:扩展了ASCII编码,在ASCII编码之上又增加了西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号,它是向下兼容ASCII编码的。ISO-8859-1也是单字节编码,但它是一个8位的容器,它能表示256个字符
GB2312:GB2312主要收录了6763个汉字、682个符号。GB2312覆盖了汉字的大部分使用率,但不能处理像古汉语等特殊的罕用字,所以后来出现了像GBK、GB18030这种编码
GBK:是向下兼容GB2312编码的,也就是说GB2312编码的汉字可以用GBK正常解码不会出现乱码,但用GBK编码的汉字用GB2312解码就不一定了
GB18030:是现在最新的内码字集于2000年发布,并于2001年强制执行,包含了中国大部分少数民族的语言字符,收录汉字数超过70000余个。它主要采用单字节、双字节、四字节对字符编码,它是向下兼容GB2312和GBK的,虽然是我国的强制使用标准,但在实际生产中很少用到,用得最多的反而是GBK和GB2312。
UNICODE:UNICODE在制定时计算机容量已不是问题,所以设计成了固定两个字节,所有的字符都用16位表示,包括之前只占8位的英文字符等,所以会造成空间的浪费,UNICODE在很长的一段时间内都没有得到推广应用。
UTF-8:它是UNICODE的一种可变长度字符编码的实现,它可以使用1~6个定长字节来编码UNICODE字符。UTF-8对ASCII字符使用单字节存储,单个字符损坏也不会影响后面的字符,所以UTF-8非常适合在网络上面传统,也是现在使用最广泛的编码之一。

2)常用进制(二进制、八进制、十六进制、十进制)的特点及其转换
特点:十进制:逢十进一,生活中常用的数值。
二进制:逢二进一,计算机系统使用的数制,只有0和1两个数。
八进制:逢八进一,采用0,1,2,3,4,5,6,7八个数字,在编程语言中通常用数字0开头表示八进制数。
十六进制:逢十六进一,采用0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F十六个数字,A-F分别表示十进制中的10-15,在编程语言中常用0x开头来表示十六进制数。
进制之间转换:
整数:十进制转换成其他进制;
转换规则:除进制数取余,倒序排序,高位补0.
小数:乘以进制数取整,顺序排列
负数:十进制转二进制:转换规则:将该负数的正数进行取反,然后加1。
十进制转其他进制则通过先转换从成二进制再转换成相应进制
3)原码、反码、补码含义、作用及其转换
含义:
原码:所谓原码就是机器数,是加了一位符号位的二进制数(因为数值有正负之分),正数符号位为0,负数符号位为1.
反码:反码的表示方式是用来处理负数的,符号位置不变,其余位置相反.
补码:虽然反码的出现解决了正负数的加减问题, 但却让0这个数字有了两种"形态": “0"和”-0", 但这是不合逻辑的,只应该有一个0,所以人们就又发明了补码.
转换:
正数:
正数的原码与反码,补码都相同.
负数:
原码转反码: 符号位不变,其余位取反. 如: -6的原码为:10000110, 反码为11111001.
反码转补码: 直接补1即可. 如: -5的反码为:11111010, 补码为11111011.
原码转补码: 符号位不变,其余各位取反后补1, 也就是反码补1.
补码转原码: 退1后,除符号位各位取反.或先计算该负数绝对值的二进制。之后对其每个数“取反”,然后加一。

2.利用”异或”运算的性质,对几个字符进行加密并输出密文,然后再解密。加密算法是:密钥是字符’8’,明文的每个字符和密钥进行异或运算,得到密文。密钥和密文的每个字符再次进行异或运算,重新得到明文。结果如图所示。
//加密原文 解密密文就是将 密文再传入Encryption函数即可
static String Encryption(String text){
char[] text1 = text.toCharArray();
char ciphertext = ‘8’;
for(int i =0;i<text.length();i++){
text1[i] = (char) (text.charAt(i)^ciphertext);
}
text = String.valueOf(text1);
return text;
}

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("输入需要加密的原文:");
    String text = sc.next();          //原文
    String text1 = Encryption(text);  //加密后的原文
    String text2 = Encryption(text1); //解密后的原文
    System.out.println("加密前的原文:"+text);
    System.out.println("密文:"+text1);
    System.out.println("解密后的原文:"+text2);
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值