基本数据类型、运算符练习

目录

第一次作业

一、简答题

二,看程序,写结果

三、编程.编程题


第一次作业

一、简答题

1.标识符的命名规则?

答:● 由26个英文字母大小写,0-9 ,_或 $ 组成 数字不可以开头。

● 不可以使用关键字和保留字,但能包含关键字和保留字。

● Java中严格区分大小写,长度无限制。

● 标识符不能包含空格。

● 注意:在起名字时,为了提高阅读性,要尽量有意义, “见名知意”

2.Java数据类型分几大类?,基本类型有哪些?

答:分为两大类(基本数据类型,引用数据类型)

基本数据类型分为 数值型 (整数类型:byte,short,int,long 浮点类型:float,double);字符型(char);布尔型(boolean)

3.基本数据类型转换规则是什么?

答:java中可以从任意基本类型转型到另外的基本类型 . 例外 : boolean 类型不可以转换为其他的数据类型。

默认转换 : 数值型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循原则: 容量小的类型默认转换为容量大的数据类型;数据类型按容量大小排序为: byte,short,char-->int-->long-->float-->double byte,short,char之间不会互相转换,他们三者在计算时首先会转换为int类型

强制转换 :容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出;使用时要格外注意。

有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一 种数据类型,然后再进行计算。

4.常用的运算符有哪几大类,分别是什么?

答:算数运算符(+,-, * ,/,%,++,--);字符串连接运算符( +);比较运算符(>,<,>=,<=,==,!=);逻辑运算符(! , &,| , &&,||)赋值运算符(= ,+ = ,- = , * = ,/ =);条件运算符,位运算符(<< ,>> ,>>> ,& ,| ,^ , ~)

5.“+” 运算符有哪几种用法,需要注意什么?

答:作为正号;作为加号;作为字符串连接,共计三种用法,需要仔细辨别使用的位置,位置不同意义不同,同时注意作为连接符时左右两边必须都是字符串。

6.“++”运算符在使用时需要注意什么?

答: ++在前,先运算后取值;++在后,先取值后运算

7.& 与 && 的区别?

答:&时,左边无论真假,右边都参与计算;&&时,如果左边为真,右边参与运算,但如果左边为假,右边无论长短都不参与运算。

二,看程序,写结果

  1. int i = 1; i += ++i; i最终的值是多少

    答: i=i+(++i) ---> i=2+2结果为4 X   改:i=i+(++i) --->i=1+2----->结果为3

  2. int i = 1;

boolean b = !(i++ == 3) && (i++==3);
System.out.println(b);
System.out.println(i); 

输出结果?

答:!(2==3)&&(2==3) --->true&&false---->结果为b=false √  i=2 X 改   !(1==3) && (2==3) ---->true&&false  i=3i++进行了两次

  1. int i = 1; int j = ++i + i++ + ++i + ++i + i++; 问 j最终的结果是多少?i最终的值多少?

    答: int j = 2+2+4+5+5

    = 18

    int i = 6  √

  2. int x = 4; int y =x++ + ++x + x*10;

    y的值?

    答: int y = 4+6+6*10

    = 70

5.int a = 10, b = 10, c = 10; boolean result = a++ == 10 && b-- == 10 || ++c == 10; 结果? 答: result=false × result=true a=11 b=10 × 改9 true && true --->true||++c==10---->短路或中,左边为真,不进行右边运算 c=10 10==10&&10==10|| 不运行 右边

6.运算符问题,下面代码分别输出什么? public static void main(String[] args) { int i1 = 10, i2 = 10; System.out.println("i1 + i2 = " + i1 + i2); System.out.println("i1 - i2 = " + i1 - i2); System.out.println("i1 * i2 = " + i1 * i2); System.out.println("i1 / i2 = " + i1 / i2); }

答: ()第二行语句报错

改:第一句+在这道题是起连接符作用,i1+i2=1010

第二句“i1-i2=”字符串--->+i1连接字符串---->但-i2只能表示减法运算,而字符串不能参与数值运算

第三句乘法运算先运算,所以是i1*i2=连接了一个10 *10 即 i1 * i2= 100

第四句除法运算先运行除法,所以是i1/i2=连接了一个10/10 即i1/i2=1

7.class Test{ public static void main (String [] args) { short a,b,C; a=1; b=2; C=a+b; //short+short----->int a += 2; } } 以上代码中,哪一句是错误的?

答: c=a+b short 类型在计算时首先会默认转换为int类型 ,但最开始c定义的是short类型

8. class Test4 { public static void main (String [] args) { boolean x=true; boolean y=false; short z=42; if((z++==42)&&(y=true)) z++; if((x=false)||(++z==45)) System.out.println(”z=”+z); } } 输出结果: z=

答: z=43 ×  改 z=45 true &&y=true 此时y=true是把true赋值给了y,并不是y==true把y与true比较 注意看 仔细 所以true&&true---->执行z++ ---->再执行下一句false||45==45(为真)即false||true ----->结果为真,则 最终输出结果z=45

9. class TestApp{ public static void main (String[] args){ for (int i=0; i<10;i++){ if(i==3){ break; } System.out.print (i); } } } 输出结果:

答:i=3 × 改 012 当i==3时,执行break 停止,则不再执行下面的语句, 所以只输出三次

10. class Test{ public static void main (String[] args){ boolean state=false; int i=2; if((++i>2)&&(state=true)) i++; //4 if((++i>4)||(state=false)) i++; //6 System.out .println (i); } } 输出结果:

答: i=4 × 改 6 无论++i还是i++ 单独看i的话,值都是已经+1后的,但如果有其他变量 如b 接收值(被赋值)操作时,++在前,先运算再取值,(a=2 b=++a)此时b为3,a为3 ++在后,先取值再运算(a=2 b=a++)此时b为2,a为3

11. class WhileTests{ public static void main (String [] args) { int x=5; while(++x<4) { --x; } System.out.println( "x="+x); } } 输出结果: x=

答: x=6

12.下面程序运行的结果正确的是: public class Demo{ public static void main (String args[]) { int num=0; for (int i=0;i<100;i++) { num=num++; } System.out.println("num="+num); } }

答: num=1  × 改 num=0

13.编译运行以下程序后,输出结果是( ) public class Demo{ public static void main (String args[]) { int x=4; double r = ((x>4) ? 99.9:9); System.out.println(r); } }

答:9 × 改9.0 原本应该是9 但因为是double类型所以只能显示9.0

14.下面的程序编译运行的结果是: public class Demo{ public static void main (String args[]) { int c; System. out. println(c); //局部变量未初始化,所以报错,只有成员变量会默认初始化 System. out. println(c++); System. out. println(c); } }

答: 011 × 局部变量未初始化,所以报错

15.下面程序运行的结果正确的是: public class Demo{ public static void main (String args[]) { int n = 100; int m = 20; if (m++ <= 20 || n == n++) System.out.println(n); System.out.println(m); } }

答: m=21 n=101 ×    改 100  21 m++先取值,再自增,true在||左边,所以右边语句不执行

16.给定如下java代码,编译运行之后结果是: class Demo{ public static void main(String args[]) { for (int i=0;i<3; i++) { System.out.print(i); } System. out. print (i); } }

答:0 1 2 3 × 编码错误  i 是局部变量,在for循环中定义和作用,作用域受限  所以第二个system取不到i的值

三、编程.编程题

1.判断某一年是否为闰年

通过Scanner 输入一个年份,然后判断概念是否是闰年 闰年判断标准(满足任何一个) 1.如果能够被4整除&&但是不能被100整除

  1. 能够被400整除

    //        判断某一年是否为闰年
    //        通过Scanner 输入一个年份,然后判断概念是否是闰年
    //        闰年判断标准(满足任何一个)
    //          1.如果能够被4整除&&但是不能被100整除
    //          2.能够被400整除
    import java.util.Scanner;
    public class Text01 {
        public static void main(String[] args) {
            System.out.println("请输入年份");
            Scanner mysacnner = new Scanner(System.in);
            int year = mysacnner.nextInt();
         if(year>0){
            if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
                System.out.println(year + "是闰年");
            } else {
                System.out.println(year + "不是闰年");
              }
            } else System.out.println("输入的年份有误");
        }
    }
    

2.根据指定月份,打印该月份所属的季节,3,4,5春季 678夏季 9 10 11秋季 12 ,1,2 冬季

答案:见下面switch语句的穿透例题

3.我家的狗5岁了,5岁的狗相当于人的多大呢?,其实狗的前两年,每一年相当于人的10.5岁,之后每增加一岁就增加4岁,那么5岁的狗相当于人的年龄就应该是10.5+10.5+4+4+4=33岁.

编写程序获取用户输入狗的年龄(整数),通过程序输出显示相当于人的年龄.如果为负数请提示.

//我家的狗5岁了,5岁的狗相当于人的多大呢?,其实狗的前两年,每一年相当于人的10.5岁,之后每增加一岁就增加4岁,
// 那么5岁的狗相当于人的年龄就应该是10.5+10.5+4+4+4=33岁.
// 编写程序获取用户输入狗的年龄(整数),通过程序输出显示相当于人的年龄.如果为负数请提示.
import java.util.Scanner;
public class Text03 {
    public static void main(String[] args) {
        System.out.println("请输入狗的年龄");
        Scanner MyScanner = new Scanner(System.in);
        int DogAge = MyScanner.nextInt();
        double PersonAge = 0;
        if (0<DogAge &&DogAge <= 2) {
                PersonAge = DogAge*10.5;
            System.out.println("相当于人的年龄"+PersonAge);
            }else if (DogAge>2){
                PersonAge = 10.5*2+(DogAge-2)*10.5;
            System.out.println("相当于人的年龄"+PersonAge);
        }else
            System.out.println("输入有误");
​
    }
}
​

4.一直青蛙在一口11米深的井底向上爬,白天向上爬3米,晚上向下滑2米,总共需要几天可以爬出.

写程序实现.

//一直青蛙在一口11米深的井底向上爬,白天向上爬3米,晚上向下滑2米,总共需要几天可以爬出.
//需定义井深Jheiget=11;爬行高度sum;爬行天数day;
//day++;白天sum+=3;晚上sum-=2;if (sum >= 11)则结束程序
//未涉及变量需要自增更新i++之类的,不考虑for循环,所以可以考虑while与if判断语句
public class Text04 {
    public static void main(String[] args) {
        int day = 0;
        int Jheight = 11;
        int sum = 0;
        while(true){
            day++;
            sum+=3;
            if (sum >=Jheight ){
              break;
            }else{
                sum-=2;
              }
            }
        System.out.println("总共需要"+day+"天");
        }
    }

5.输出100以内最大的5个奇数

//输出100以内最大的5个奇数
//要求最大的奇数,所以从后往前,
// 奇数的实现可以通过给100+1后,倒着连续-2,
// 5个奇数所以减五次
public class Text05 {
    public static void main(String[] args){
        int sum = 100+1;
        for (int i = 1;i<=5;i++){
            sum-=2;
            System.out.print(sum +" ");
        }
    }
}

6.有1、2、3、4四个数字,能组成多少个互不相同且一个数字中无重复数字的三位数?

//有1、2、3、4四个数字,能组成多少个互不相同且一个数字中无重复数字的三位数?
//123 124 132 134 142 143
//213 214 231 234 241 243
//312 314 321 324 341 342
//412 413 421 423 431 432
//题目要求三位数,个位,十位,百位,所以可以使用三个for循环嵌套
//有 1 2 3 4 这四个数字构成,那么循环的内容就是1 2 3 4
//每一位互不相同,所以用if来确保
public class Text06 {
    public static void main(String[] args){
           //符合条件的三位数计数器累加
        int count = 0;
        //百位数,由1~4构成
            for (int i = 1;i <= 4 ;i++){
                //十位数,由1~4构成
                for (int j = 1;j <= 4;j++){
                    //个位数,由1~4构成
                    for (int k = 1;k <= 4;k++){
                        //每一位互不相同,if来确保
                        if (i != j && j != k && i != k){
                            System.out.print(" "+i+j+k+" ");
                            count++;
                        }
                    }
                }
            }
            System.out.println("共计"+count+"个不同的三位数");
    }
}

7.编程一个程序,计算今天是今年的第几天.

例如: 输入年 2022 输入月 8 输入天 16,输出228天

//自己第一次写的方法,非常啰嗦,
//7.编程一个程序,计算今天是今年的第几天.
//  例如: 输入年 2022 输入月 8  输入天 16 结果是227天
//思路分析:先输入年份判断是否是闰年,因为闰年2月有29天
//四年一闰,百年不闰,四百年再闰
//输入月份,1 3 5 7 8 10 12 都有31天 4 6 9 11 有30天 平年2月28天 闰年2月29天
import java.util.Scanner;
public class Text07 {
    public static void main(String[] args){
          int year = 0;
          int month = 0;
          int day = 0;
          int sum = 0;
          Scanner MyScanner01 = new Scanner(System.in);
          System.out.println("请输入年份");
          year = MyScanner01.nextInt();
          if (year > 0){
            Scanner MyScanner02 = new Scanner(System.in);
            System.out.println("请输入月份");
            month = MyScanner02.nextInt();
                if (month > 0 && month <= 12){
                    Scanner MyScanner03 = new Scanner(System.in);
                    System.out.println("请输入天");
                    day = MyScanner03.nextInt();
                    if (day > 0 && day <= 31){
                        if ((year % 4 == 0 && year % 100 != 0) ||( year % 400 == 0)){
                             switch (month){
                                 case 1 :sum=(day);
                                     break;
                                 case 2 :sum=(31+day);
                                     break;
                                 case 3 :sum=(31+29+day);
                                     break;
                                 case 4 :sum=(31*2+29+day);
                                     break;
                                 case 5 :sum=(31*2+29+30+day);
                                     break;
                                 case 6 :sum=(31*3+29+30+day);
                                     break;
                                 case 7 :sum=(31*3+29+30*2+day);
                                     break;
                                 case 8 :sum=(31*4+29+30*2+day);
                                     break;
                                 case 9 :sum=(31*5+29+30*2+day);
                                     break;
                                 case 10 :sum=(31*5+29+30*3+day);
                                     break;
                                 case 11 :sum=(31*6+29+30*3+day);
                                     break;
                                 case 12 :sum=(31*6+29+30*4+day);
                                     break;
                             }
                        }else{
                            switch (month){
                                case 1 :sum=(day);
                                    break;
                                case 2 :sum=(31+day);
                                    break;
                                case 3 :sum=(31+28+day);
                                    break;
                                case 4 :sum=(31*2+28+day);
                                    break;
                                case 5 :sum=(31*2+28+30+day);
                                    break;
                                case 6 :sum=(31*3+28+30+day);
                                    break;
                                case 7 :sum=(31*3+28+30*2+day);
                                    break;
                                case 8 :sum=(31*4+28+30*2+day);
                                    break;
                                case 9 :sum=(31*5+28+30*2+day);
                                    break;
                                case 10 :sum=(31*5+28+30*3+day);
                                    break;
                                case 11 :sum=(31*6+28+30*3+day);
                                    break;
                                case 12 :sum=(31*6+28+30*4+day);
                                    break;
                            }
                        }
                        System.out.println("今天是今年的第"+sum+"天");
                    }else{System.out.println("天数输入必须在0~31之间");}
                }else{System.out.println("月份输入必须在1~12之间");}
          }else{ System.out.println("年份输入必须大于0"); }
    }
}
​
//乐扣上的类似题
//数组+for循环+if语句
import java.util.Scanner;
class Solution2 {
    public static void main(String[] args) {
        int ans = 0;
            Scanner MyScanner01 = new Scanner(System.in);
            System.out.println("请输入年份");
            int year = MyScanner01.nextInt();
                System.out.println("请输入月份");
                int month = MyScanner01.nextInt();
                    System.out.println("请输入天");
                    int day  = MyScanner01.nextInt();
                    int[] amount = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
                    if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
                        ++amount[1];
                    }
​
                    for (int i = 0; i <month - 1; i++) {
                        ans += amount[i];
                    }
                int end = ans + day;
                System.out.println("今天是今年的第"+end+"天");
            }
        }

8.猴子吃桃问题。猴子第一天摘下若干个桃子,当时就吃了一半,还不过瘾,就又吃了一个。第二天又将剩下的桃子吃掉一半,又多吃了一个。以后每天都吃 前一天剩下的一半零一个。到第 10 天在想吃的时候就剩一个桃子了,求第一天共 摘下来多少个桃子?

public class Text08{
    public static void main(String[] args){
        int num = 1;
        int day = 10;
        System.out.println("第" + day + "天有桃子:" + num);
        for (day = 9; day >= 1; day--) {
            num = 2 * (num + 1);
            System.out.println("第" + day + "天有桃子:" + num);
        }
        System.out.println("猴子在第1天摘了" + num + "个桃子");
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值