20165318 2017-2018-2 《Java程序设计》第二周学习总结

Posted sunxiaoxuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20165318 2017-2018-2 《Java程序设计》第二周学习总结相关的知识,希望对你有一定的参考价值。

20165318 2017-2018-2 《Java程序设计》第二周学习总结

教材学习内容总结

本周学习了第二章和第三章的内容,掌握了Java中基本数据类型、数组、运算符、表达式和语句等方面的知识。

总结第一周的学习经验,在本周的学习过程中,我仔细阅读了教材,发现了很多以往在学习C语言中没有注意到的小细节。在与C语言对比学习的过程中,不仅巩固了C语言基础,而且对Java的便利有了新的认识,仿佛打开了一扇大门,在编写代码时不再觉得枯燥无味,反而会主动思考,并用不同的方法去解决同一个问题。

Java与C语言的不同之处

1、Java中没有无符号的byte,short,int和long,这一点和C语言不同。因此,unsigned int m;是错误的s变量声明。

2、Java中的char型数据一定是无符号的,而且不允许使用unsigned来修饰所声明的char型变量。

3、Java不允许在声明数组中的方括号内指定数组元素的个数。例如int a[12];将导致语法错误。

4、Java允许使用int型变量的值指定数组的元素的个数。例如:

int size = 30;
double number[] = new double[size];

教材学习中的问题和解决过程

  • 问题1:类型转换运算(P21)

在讲把级别高的变量的值赋给级别低的变量,必须使用类型转换运算时,有一个例子:

long y = (long)56.98F

我当时很疑惑为什么float型变量赋给long型变量时要使用类型转换运算。

  • 解决过程:在第二次看教材时发现,我混淆了float和long的精度高低。基本数据类型变量按精度从低到高排列:

    byte short char int long float double
  • 问题2:类型转换过程中精度损失(P22)

教材中有例子:

byte a = (byte)128;
byte b = (byte)(-129);

得到的a和b的值分别时-128和127,我不理解这个代码的运算过程。

  • 解决过程:在类型转换运算中得到了解决,并自己尝试计算

    byte a = (byte)255;

    得到的结果的确是a=-1。

代码调试过程中的问题和解决过程

  • 问题1:我使用的是Windows中的git bash,但是在git 中会出现中文乱码的问题,我的git中默认的编码是UTF-8,我在vim中编写代码后用编译运行就会出现中文乱码。我参考了windows下git bash中文乱码解决办法,但在这与我的git情况不符。我在自己尝试后,发现使用GBK编码运行不会出现中文乱码,但是在vim编辑器中会出现中文乱码。
    这个问题我现在还没有找到解决方法。

技术分享图片

  • 问题2:
    我在调试例子3.9(P47)时出现错误

技术分享图片

  • 解决方法:经过检查代码,我发现,我将System.out.printf,输入成System.out.println,导致println与其内容中的%d不符。

  • 问题3:在调试例子3.7(P45)输出100以内的z所有素数时,结果只能输出2和3代码如下;

    public class Example3_7 {
    public static void main (String args[]) {
        int sum =0,i,j;
        for(i=1;i<=10;i++) {
            if(i%2==0) {
                continue;
            }
            sum = sum + i;
        }
        System.out.println("sum="+sum);
        for(j=2;j<=100;j++) {
            for(i=2;i<=j/2;i++){
                if(j%i==0) { 
                    break;
                }
            }
            if(i>j/2) {
                System.out.println(""+j+"是素数");
            }
        }
    }
    }
  • 解决方法:由于我打代码时都会使用行尾风格,并且即使是if语句中只有一行代码也不会省略{},因此在输入书上代码时,我将if语句中的break;语句也用{}括起来了,但是输出素数却只有2和3,但我去掉break;语句的{}时运行结果正常。

虽然能输出正确结果了,但我还是不太明白问题出在哪,难道break语句只跳出了if语句却没有跳出for循环吗?希望能得到解答。

码云链接:https://gitee.com/BESTI-IS-JAVA-2018/20165318_sun_xiaoxuan

脚本运行截图:

技术分享图片

参考资料:

windows下git bash中文乱码解决办法

类型转换运算



以上是关于20165318 2017-2018-2 《Java程序设计》第二周学习总结的主要内容,如果未能解决你的问题,请参考以下文章

2017-2018-2 20165318 实验二《Java面向对象程序设计》实验报告

2017-2018-2 20165318 实验三《Java面向对象程序设计》实验报告

20165318 2017-2018-2 《Java程序设计》第四周学习总结

20165318 2017-2018-2 《Java程序设计》第六周学习总结

20165318 2017-2018-2 《Java程序设计》第一周学习总结

20165318 2017-2018-2 《Java程序设计》第一周学习总结