• 20145107 《Java程序设计》第3周学习总结


    学号 《Java程序设计》第3周学习总结

    教材学习内容总结

    本章要进行的是第四章和第五章的学习,感觉学习的量还是很大的,知识的内容很丰富,也很有趣,是Java知识中的核心内容了。
    第四章主要是认识对象,它的基本目标是:

    1.区分基本类型与类类型

    2.了解对象与参考的关系

    在定义类的部分,作者用衣服的牌子,颜色,尺寸等做了一个比喻。书中相应程序如下:

    class Clothes
    {
        String color;
        char size;
    }
    public class  Main
    {
        public static void main (String[] args)
        {
            Clothes sun = new Clothes();
            Clothes spring = new Clothes();
    
            sun.color = "red";
            sun.size = 'S';
            spring.color = "green";
            spring.size = 'M';
    
            System.out.printf("sun(%s, %c)%n",sun.color,sun.size);
            System.out.printf("spring(%s, %c)%n",spring.color,spring.size);
        }
    }
    
    

    在这个程序中,一共定义了两个类,一个是公开的Main类,所以在文档中,主文档的命名就是Main,而另外一个就是非公开的clothes类。在程序中,又分别建立了两个clothes的实例,并分别声明了sun与spring两个名称来参考,接着,将sun绑定对象的color,size分别指定为“red”,“s”,将spring的color与size分别绑定为“green”与“M”。最后分别显示相应的数据成员值。
    最后执行的结果如下所示:

    sun(red, S)
    spring(green, M)
    
    

    还有就是使用标准类:书中有一个程序是使用Java.util.Scanner。它的作用就是可以用户进行输入,相应的程序实例如下:

    import java.util.Scanner;
    
    public class Main
    {
        public static void main (String[] args)
        {
            Scanner scanner = new Scanner(System.in);
            int number = (int) (Math.random() * 10);
            int guess;
    
            do
            {
                System.out.print("猜数字(0~9):");
                guess = scanner.nextInt();
            }
            while (guess != number);
    
            System .out.println("bingo!!");
        }
    }
    
    
    

    在idea上运行相应的程序,会有如下的结果:

    在这个程序中 import java.util.Scanner; 这条语句便是程序输入的关键部分,他给我们程序的输入带来了很大的便利。
    在本书中,还有一个标准类,他就是Java.math.BigDecimal,它可以帮助我们在计算中得到更好的精度。
    相应的程序如下:

    
    public class Main
    {
        public static void main (String[] args)
        {
            BigDecimal operand1 = new BigDecimal("1.0");
            BigDecimal operand2 = new BigDecimal("0.8");
            BigDecimal result = operand1.subtract(operand2);
            System.out.println(result);
    
        }
    }
    
    

    在idea中运行的结果如下图所示:

    3.从打包器认识对象

    打包器的基本类型为:Long、Integer、Double、Float、Boolean。将基本类型打包在对象之中,可以将对象当作基本类型来进行操作。
    在本书中的案例为:

    public class IntegerDemo
    {
        public static void main (String[] args)
        {
            int data1 = 10;
            int data2 = 20;
            Integer wrapper1 = new Integer(data1);
            Integer wrapper2 = new Integer(data2);
            System.out.println(data1/3);
            System.out.println(wrapper1.doubleValue()/3);
            System.out.println(wrapper1.compareTo(wrapper2));
        }
        
    }
    
    

    中运行的结果如图所示:

    4.已对象观点看待数组:

    在c语言中我们已经学习过数组,所以在学习Java的数组时感觉还是有一点基础。在Java中,数组是对象,而不是单纯的数据集合。数组有一维数组和二位数组之分,一维数组比较简单相应的程序实例如下:

    public class Main
    {
        public static void main (String[] args)
        {
          int[] score={88,81,74,68,78,76,77,85,95,93};
            for (int i=0;i<score.length;i++)
            {
                System.out.printf("学生分数: %d ,%n",score[i]);
            }
        }
    
    }
    
    

    在idea运行的结果如下:

    二维数组与c语言种的有很多相似之处,将二维数组看成是矩阵会比较容易理解一些。书中有关二维数组的程序如下:

    public class XY
    {
    public static void main(String[] args)
    {
    int[][] cords={
                    {1,2,3},
                    {4,5,6}
                    };
    for(int[] row : cords)
    {
        for(int value : row)
        {
            System.out.printf("%2d",value);
        }
        System.out.println();
    }
    }
    }
    
    

    程序在idea中运行如下所示:

    Java数组中还有数组操作与数组复制到的问题:

    import java.util.Arrays;
    public class Main
    {
        public static void main (String[] args)
        {
            int[] score1={88,81,74,68,78,76,77,85,95,93};
            int[] score2={88,81,74,68,78,76,77,85,95,93};
            for (int score: score2)
            {
                System.out.printf("%3d",score);
            }
            System.out.println();
            score2[0]=99;
            for (int score : score1)
            {
                System.out.printf("%3d",score);
            }
        }
    
    }
    
    

    这是数组的复制操作问题,在idea上会有如下结果:

    5.认识字符串的特性

    对于Java中字符串的本质是打包字符数组的对象,是Java.lang.String的实例。书中有一个输入整数计算整数和和程序运算;

    import java.util.Scanner;
    public class Main
    {
        public static void main (String[] args)
        {
            Scanner scanner =new Scanner (System.in);
            long sum=0;
            long number =0;
            do
            {
                System.out.print("输入数字:");
                number=Long.parseLong(scanner.nextLine());
                sum += number;
            } while (number != 0);
            System.out.println("总和:" + sum);
        }
    
    }
    
    

    程序在idea中的运行如下所示:

    第五章主要讲的是对象封装的问题

    1.何为封装:

    封装(Encapsulation)实际上是使用方法(Method)将类的数据隐藏起来,控制用户对类的修改和访问数据的程度,隐藏对象细节,将对象当作黑箱进行操作。其主要方法有三个:
    1.通过构造方法(构造函数)封装初始化流程
    2.通过成员方法(函数)封装操作
    3.通过成员变量封装数据

    2.有关类语法细节:

    1.public权限修饰
    如果没有声明权限修饰的成员,只有在相同包的类程序代码下才可以直接存取,也就是“包范围权限”。如果想在其他包的类程序代码中存取某包的类或对象成员,则该类或对象成员必须是公开成员,在java中要使用public加以声明。
    2.方法重载:

    class Some
    {
    void someMethod(int i)
        {
        System.out.println("int 版本被调用");
        }
    void someMethod(Integer integer)
        {
        System.out.println("Integer 版本被调用");
        }
    }
    public class Overload
    {
        public static void main(String[] args)
        {
            Some s = new Some();
            s.someMethod(1);
        }
    }
    
    

    相应的程序截图如下:

    3.this关键字:
    this代表其所在函数所属对象的引用,当在函数内需要用到调用该函数的对象时,就用this.代码如下:

    class Other{
    {
    System.out.println("对象初始区块");
    }
    Other()
    {
    System.out.println("Other() 构造函数");
    }
    Other(int o )
    {
    this();
    System.out.println("Other(int o ) 构造函数");
    }
    }
    
    public class ObjectInitialBlock
    {
    public static void main(String[] args)
    {
        new Other(1);
    }
    }
    
    

    程序执行如图所示:

    在本章中的代码已经托管到git上:

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

    在调试第五章的代码时,发现有一些代码是运行不了的,教材的内容也不是很好理解,要好好看看书才能有所理解,需要多看,多学才行。

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

    其他(感悟、思考等,可选)

    第五章的问题比较多,有很多问题还没有解决,希望在今后的学习中可以更加深入的学习,解决自己的问题。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 200/200 2/2 20/20
    第二周 250/300 2/4 18/38
    第三周 300/500 3/7 22/60

    参考资料

  • 相关阅读:
    制作基于OK6410的文件系统(2.修改busybox文件系统,使之能启动)
    [转]SlickEdit 2012
    移植TPLINK TLWN721N 驱动到micro2440(by liukun321咕唧咕唧)
    擦,买到了伪劣的SD卡
    Slickedit中文显示与输入
    OMAP3530mini调试笔记(2)
    最近在做linux的移植工作
    嵌入式linux启动时运行的inittab文件(zz)
    OMAP3530mini调试笔记(1)
    Ubuntu中音量调节无效的解决方法
  • 原文地址:https://www.cnblogs.com/20145107lcd/p/5295989.html
Copyright © 2020-2023  润新知