《移动平台开发实践》第三周学习任务

目录

  • 20189230杨静怡 2018-2019-2 《移动平台开发实践》第3周学习总结

    • 学习《Java和Android开发学习指南(第二版)》第5、6、8、9章——
    • 教材学习中的问题和解决过程
    • 代码调试中的问题和解决过程
    • [代码托管]
    • statistics.sh脚本运行结果的截图
    • 上周考试错题总结
    • 学习进度条
    • 参考资料

20189230杨静怡 2018-2019-2 《移动平台开发实践》第3周学习总结

学习《Java和Android开发学习指南(第二版)》第5、6、8、9章——

第5章核心类
5.1 java.lang.Object

  1. java.lang.Object类表示一个Java对象。实际上,所有的类都直接或间接地派生自这个类。
    5.2 java.lang.String
  2. java.lang.String是最常使用的一个类,并且绝对也是最重要的类之一。一个String对象是常量,一旦创建了,不能修改其值。
  3. 通常将一个字符串字面值赋值给一个String引用变量,而非用关键字构建一个String引用变量。
    5.2.1 比较两个字符串
  4. 使用==操作符比较两个String对象s1和s2。若相同,(s1==s2)计算为true;若不同,(s1==s2)计算为false。
    5.2.2 字符串的字面值
  5. 可以使用加号把两个字符串字面值连接起来:“”+“”;也可以将一个String和一个基本数据类型或其他的对象连接起来:“”+3
    5.2.6 String类的方法
  6. valueOf方法将一个基本类型、一个字符数组或Object的一个实例转换为一个字符串表示。例如,如下的代码返回字符串“23”:String.valueOf(23)。
  7. Format方法允许你传递任意数目的参数。要指定一个参数,使用%s表示法,表示数组中的下一个参数。例如,如下是对printf方法的一次方法调用:
    String firstName=“John”;
    String Lastname=“Adams”;
    System.out.format(“First name: %s. Last name: %s”,
    firstName,lastName);
    5.3 java.lang.StringBuffer和java.lang.StringBuilder
    String对象是不可变的。最好使用java.lang.StringBuffer和java.lang.StringBuilder类。一旦完成了对字符串的操作,可以将一个StringBuffer或StringBuilder对象转换为一个String对象。StringBuffer类是为了可变的字符串而单独使用的,方法同步,适合在多线程环境中使用。StringBuilder是StringBuffer的异步版本。
    5.5 java.lang.Class
    1.代码清单5.1 ClassDemo类
package app05;
public class ClassDemo{
    public static void main(String[] args){
        String country="Fiji";
        Class myClass=country.getClass();
        System.out.println(myClass.getName());
        Class klass=null;
        try{
            klass=Class.forName("app05.Test");
        }catch(ClassNotFoundException e){
        }
        if(klass!=null){
            try{
                Test test=(Test) klass.newInstance();
                test.print();
            }catch (IllegalAccessException e){
            }catch (InstantiationException e){

            }
        }
    }
}

5.6 java.lang.System
1.System类的三个字段是out、in和err:
out字段表示标准的输出流;
err字段也表示一个PrintStream对象,默认情况下,输出也会从当前调用Java程序的地方通向控制台。其目的是显示那些应该立即引起用户注意的错误消息;
in字段表示输入标准流。
2.代码清单5.2 InputDemo类

public class Employee{
  public int age;
  public double salary;
  public Employee(){
  }
    public Employee(int ageValue, double salaryValue){
      age=ageValue;
      salary=salaryValue;
    }
  }

4.7 java.util.Scanner
1.可以使用Scanner来获取键盘输入,在实例上调用next方法。next方法会缓存用户从键盘或其他设备输入的字符。
2.代码清单5.3 使用Scanner来接受用户输入

package app05;
import java.util.Scanner;

public class ScannerDemo{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        while(true){
            System.out.print("What's your name?");
            String input=scanner.nextLine();
            if(input.isEmpty()){
            break;
            }
            System.out.println("Your name is"+input+".");
        }
        scanner.close();
        System.out.println("Good bye");
    }
}

第6章 数组
6.1 概览
1.每次创建一个数组,在后台,编译器都要创建一个对象以允许:
(1)通过length字段来获取数组中的元素的数目。
(2)通过指定一个索引来访问每一个元素。
一个数组是一个Java对象。
6.5 查找一个数组
1.代码清单6.1 一个二分查找的示例

package app06;
import java.util.Arrays;

public class BinarySearchDemo{
    public static void main(String[] args){
        int[] primes={2,3,5,7,11,13,17,19};
        int index=Arrays.binarySearch(primes,13);
        System.out.println(index);
        index=Arrays.binarySearch(primes,4);
        System.out.println(index);
    }
}

代码清单6.1中的BinarySearchDemo类使用了一个int类型的数组,它包含了前8个素数。传入13作为查找键,将会返回5,因为13是该数组中的第6个元素,其索引为5.传入4作为查找键,将会找不到匹配,该方法返回-3.这是-2减去1的结果。如果要将该键插入到数组中的话,它本应该插入到索引2的位置。
6.6 给main方法传入一个字符串数组
1.代码清单6.2 访问main方法的参数

package app06;
public class MainMethodTest{
    public static void main(String[] args){
        for (String arg:args){
        System.out.println(arg);
        }
    }
}

6.7 多维数组
1.代码清单6.3 一个多维数组

package app06;
import java.util.Arrays;

public class MultidimensionalDemo{
    public static void main(String[] args){
        int[][] matrix=new int[2][3];
        for(int i=0;i<2;i++){
            for(int j=0;j<3;j++){
                matrix[i][j]=j+i;
            }
        }
        for(int i=0;i<2;i++){
            System.out.println(Arrays.toString(matrix[i]));

        }
    }
}

第8章错误处理
8.1 捕获异常
1.try通常和catch和finally使用。错误处理的步骤可以概括如下:
(1)将可能导致一个错误的代码隔离到一个try语句块中。
(2)对于每一个单个的catch语句块,编写出如果try语句块中发生特定类型的一个异常,将要执行的代码。
(3)在finally语句块中,编写出不管是否发生错误都将运行的代码。
2.代码清单8.1 NumberDoubler类

package app08;
import java.util.Scanner;

public class NumberDoubler{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        String input=scanner.next();
        try{
            double number=Double.parseDouble(input);
            System.out.printf("Result:%s",number);
        }catch(NumberFormatException e){
            System.out.println("Invalid input.");
        }
        scanner.close();
    }
}

第九章操作数字
9.1 装箱和拆箱
1.将一个基本类型转换为一个包装类对象,称为装箱(boxing);从一个包装类对象转换为基本类型,称为拆箱(unboxing)。
装箱——

Integer number=3;//assign an int to Integer

拆箱——

Integer number=new Integer(100);
int simpleNumber=number;

9.2 数字解析
1.数字解析的目的是将一个字符串转换为一个数字基本类型。如果解析失败,例如,由于字符串不是一个数字或者是一个超出了指定范围的数字,程序将会抛出一个异常。
2.代码清单9.1 解析数字(NumberTest.java)

package app09;
import java.util.Scanner;

public class NumberTest{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        String userInput=scanner.next();
        try{
           int i=Integer.parseInt(userInput);
           System.out.println("The number entered:"+i);
        }catch(NumberFormatException e){
        System.out.println("Invalid user input");
        }
    }
}

9.3 数字格式化
1.代码清单9.2 NumberFormatTest类

package app09;
import java.text.NumberFormat;
import java.util.Locale;

public class NumberFormatTest{
    public static void main(String[] args){
        NumberFormat nf=NumberFormat.getInstance(Locale.US);
        System.out.println(nf.getClass().getName());
        System.out.println(nf.format(123445));
    }
}

9.6 计算货币
1.float和double都不适合于计算货币。
2.代码清单9.3 使用BigDecimal

package app09;
import java.math.BigDecimal;

public class BigDecimalDemo{
    public static void main (String[] args){
        double balance=9.99;
        balance-=0.10F;
        System.out.println(balance);

        BigDecimal balance2=BigDecimal.valueOf(9.99);
        BigDecimal accountFee=BigDecimal.valueOf(.1);
        BigDecimal r=balance2.subtract(accountFee);
        System.out.println(r.doubleValue());
    }
}

9.7 生成随机数
1.代码清单9.4 随机数生成器

package app09;
public class RandomNumberGenerator{
    public int generate(){
        double random=Math.random();
        return(int)(random*10);
    }
    public static void main(String[] args){
        RandomNumberGenerator generator=
            new RandomNumberGenerator();
        for(int i=0;i<10;i++){
            System.out.println(generator.generate());
        }
    }
}

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

  • 问题:对Java中错误和异常的部分知识掌握不清
  • 问题解决方案:在网上查找相关资料并学习总结:
    Java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。在Java API中已经定义了许多异常类,这些异常类分为两大类,错误Error和异常Exception。Java异常层次结构图如下图所示:

从图中可以看出所有异常类型都是内置类Throwable的子类,因而Throwable在异常类的层次结构的顶层。
接下来Throwable分成了两个不同的分支,一个分支是Error,它表示不希望被程序捕获或者是程序无法处理的错误。另一个分支是Exception,它表示用户程序可能捕捉的异常情况或者说是程序可以处理的异常。其中异常类Exception又分为运行时异常(RuntimeException)和非运行时异常。
Java异常又可以分为不受检查异常(Unchecked Exception)和检查异常(Checked Exception)。
Error:Error类对象由 Java 虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关。例如,Java虚拟机运行错误(Virtual MachineError),当JVM不再有继续执行操作所需的内存资源时,将出现 OutOfMemoryError。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止;还有发生在虚拟机试图执行应用时,如类定义错误(NoClassDefFoundError)、链接错误(LinkageError)。这些错误是不可查的,因为它们在应用程序的控制和处理能力之外,而且绝大多数是程序运行时不允许出现的状况。对于设计合理的应用程序来说,即使确实发生了错误,本质上也不应该试图去处理它所引起的异常状况。在Java中,错误通常是使用Error的子类描述。
Exception:在Exception分支中有一个重要的子类RuntimeException(运行时异常),该类型的异常自动为你所编写的程序定义ArrayIndexOutOfBoundsException(数组下标越界)、NullPointerException(空指针异常)、ArithmeticException(算术异常)、MissingResourceException(丢失资源)、ClassNotFoundException(找不到类)等异常,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生;而RuntimeException之外的异常我们统称为非运行时异常,类型上属于Exception类及其子类,从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如IOException、SQLException等以及用户自定义的Exception异常,一般情况下不自定义检查异常。

Error和Exception的区别:Error通常是灾难性的致命的错误,是程序无法控制和处理的,当出现这些异常时,Java虚拟机(JVM)一般会选择终止线程;Exception通常情况下是可以被程序处理的,并且在程序中应该尽可能的去处理这些异常。

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

  • 问题1:不会使用JDB调试Java程序
  • 问题1解决方案:
    Linux Bash下调试代码:在相应文件夹下选择在终端打开——用vim生成HelloJDB.java——直接javac -g -d HelloJDB.java——java HelloJDB
    调试基础——
    方法断点:stop in HelloJDB.main;stop at HelloJDB:12
    行断点:stop in HelloJDB.main-run-locals-step(next)-locals-print i-print j-list
    条件断点:
    临时断点:
    使用:jdb -classpath .:./bin HelloJDB 调试程序;JDB不支持条件断点和临时断点
    实例:类的调试-递归学习
  • 问题2:不会连接数据库
  • 问题2解决方案:(1)数据库连接测试

(2)访问数据库表-封装新增留言信息-测试:

[代码托管]

https://gitee.com/EvelynYang/20189230/tree/master/src

statistics.sh脚本运行结果的截图

上周考试错题总结

  • 11.如果有以下程序片段:
    public class Some{
    private Some some;
    private Some(){}
    public static Some create(){
    if(some=null){
    some = new Some():
    }
    return some;
    }
    }
    以下描述正确的是
    A .编译失败
    B .客户端必须new Some()产生Some实例
    C .客户端必须new Some.create()产生Some实例
    D .客户端必须Some.create()产生Some实例
    正确答案: D 我的答案: A
  • 15.如果有以下程序片段:
    public class Some{
    public int x;
    public Some(int x){
    this.x=x;
    }
    }
    以下描述正确的是
    A .new Some(10)创建对象后,对象成员x值为10
    B .new Some(10)创建对象后,对象成员x值为0
    C .Some s = new Some(10)后,可使用s.x取值
    D .编译失败
    正确答案: A 我的答案: D

学习进度条

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

参考资料

原文地址:https://www.cnblogs.com/EvelynYang/p/10541499.html

时间: 2024-10-31 22:02:26

《移动平台开发实践》第三周学习任务的相关文章

《移动平台开发实践》第7周学习总结

20189208 2018-2019-2 <移动平台开发实践>第7周学习总结 教材学习内容总结 需求: 用户需求:用户提出的. 产品需求:由用户需求提炼出的需求. 需求分析一般步骤: 挖掘真实需求:(更快的马车) 目标用户 使用场景 想要解决的问题 提出解决方案 筛选和验证方案 软件项目需求分析 收集需求 分析需求:表层需求→深层需求→底层需求 需求评价 需求设计 验证需求 产品经理常用软件 Axure RP 墨刀 石墨文档 第27章主要介绍了5种控件布局方法: LinearLayOut-水平

20189208《移动平台开发实践》第10周学习总结

<移动平台开发实践>第10周学习总结 教材学习内容总结 第39章偏好 调用SharedPreference接口管理键/值对类型的应用程序设计,通过getDefaultSharePreferences静态方法传入 Context来获取SharedPreferences的默认实例.使用Android Preference API创建编辑设置的界面 第40章 第41章 第42章 教材学习中的问题和解决过程 问题1: 问题1解决方案: 问题2: 问题2解决方案: 代码调试中的问题和解决过程 问题1:

王之泰201771010131《面向对象程序设计(java)》第三周学习总结

王之泰201771010131<面向对象程序设计(java)>第三周学习总结 第一部分:理论知识复习部分 第一章 回顾了Java"白皮书"的关键性语句,再次理解了以前未理解的句子.对Java语言的十多种特性又有了更深刻的理解和不同角度的体会. 第二章 继续使用eclipse实验开发程序,在jdk源文件中仔细欣赏体会了标准代码的范例,以此来规范自己的编写风格. 第三章 第三章中复习了Java的基本语法,着重复习了运算符的使用和文件的输入输出,深刻理解了例如:控制流程语句等五种

张季跃 201771010139《面向对象程序设计(java)》第三周学习总结(改)

张季跃 201771010139<面向对象程序设计(java)>第三周学习总结 第一部分:理论知识学习部分 3.6字符串 u(1)Java字符串是Unicode字符的序列,它是组织字符的基 本数据结构,用法类似于字符数组. u (2)有内置的字符串类型,而是在标准Java类库中提供了一 个Java预定义类String.在Java中,字符串被当作对象 来处理. u      (3)程序中需要用到的字符串可以分为两大类: –创建之后不会再做修改和变动的不可变字符串String类: –创建之后允许再

杨其菊201771010134《面向对象程序设计(Java)》第三周学习总结

<面向对象程序设计(Java)>第三周学习总结 第一部分:理论知识 这周课程没有新进度,由于感觉对基础语法的不熟悉,复习了一遍前三章的细碎知识,学到一些之前不知道的原理: 1.计算机高级语言按程序的方式可以分为两种:编译型和解释型 编译型:C,C++,Objective-C,Pascal等: 解释型:Ruby,Python, 半编译型:Visual Basic, java:既是编译型语言又是解释型语言. 2.classpath 环境变量的设置:如果使用1.5以上的版本,完全可以不用设置这个环境

20145319 第三周学习总结

20145319 <Java程序设计>第三周学习总结 教材学习内容总结 本周学习教材第四.五章,这两章主要讲述了java语言中“对象”的相关知识,认识对象以及对象封装. 1. 类与对象 定义:对象是java语言中极为重要的一环,在使用java编写程序时基本离不开对象,而java中有基本类型和类类型两种类型系统,在使用对象前就需先定义类(Class),类是对象的设计图,对象是类的实例 使用事项: 1对象的一些使用和c语言中的指针极为相似,例如Clothes c1 = new Clothes();

20172328《程序设计与数据结构》第三周学习总结

20172328李馨雨<程序设计与数据结构>第三周学习总结 教材学习内容总结 1.学习使用new运算符建立对象(即实例化),了解null空引用.具体体悟 :类和对象的关系. 2.对象引用变量的声明和初始化.用"."来引用方法,并且需要保留(). 3.了解String类的一些基本方法和标准类库java API. 4.除了在java.lang中的变量无需import声明,其他都需要import声明(简化类的多次引用). 5.了解和使用Random类和Math类. 6.理解格式化

《数据结构与面向对象程序设计》第二、三周学习总结

目录 20182319 2019-2020-1 <数据结构与面向对象程序设计>第二.三周学习总结 教材学习内容总结 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 上周考试错题总结 结对及互评 评分: 点评过的同学博客和代码 其他(感悟.思考等,可选) 学习进度条 20182319 2019-2020-1 <数据结构与面向对象程序设计>第二.三周学习总结 @ 教材学习内容总结 ??这两周主要学习的是对于数据的类型以及输入输出的学习和对于几个常用的类的学习. ??首

20191320《信息安全导论》第三周学习总结

2019132020191320<信息安全系统设计基础>第三周学习总结 教材总结 <计算机科学概论>第三周学习总结 -第二章<二进制数值与技术系统>:在这一章里,我学习到不同的进制的不同运算,了解了基数,位置计数法等概念,同时学习到不同的进制间的换算方法以及不同进制的计算.学到了很多以往没有学过的数学知识. -第三章<数据表示法>:这一章让我感受到数据与计算机的密不可分,知道了电脑是一种数字化的设备,掌握了数字与模拟的区别,同时懂得了将音频模拟数据数字化的方