I block ads too. Donate?

EECS1022 Android入门教程

2016-01-06 17:43:33

[专业笔记]

 

主要是上课的笔记,尽量尝试一下周更吧。内容会比较偏向于应试方面。

选这门课主要还是凑学分刷绩点吧,所以这里写的很多其实大家都明白,但是考试要是真是要考可能就记不起来的内容。

 

 

Lecture 1

 

EECS 1022  Prof Roumani - York Univeristy

  • Separation of Concerns
  • Industrial-Strength Tools
  • IoT  Internet of Things

 

ELOs 课程评价方式

  1. 基本的程序设计
  2. UI和Java的连接
  3. 建造App使用现有API
  4. OOP
  5. 使用简单的OOP,Observing S/E 标准
  6. 集合、文件、正则表达式

 

疑问:Moodle -> Form
每周都有实验

 

关于变量的命名方式

  • XML采用Pascal的方式定义          ThisIsTheVariable
  • Java 在变量方面使用OC相同的Camel方式定义 thisIsTheVariable
  • 但是Java在Class名称方面喜欢使用Pascal方式命名Class Name: PASCAL
    Method Name: Camel
    Block: {}在同一列

 

各种词语的定义

  • Attributes函数中的参数
  • Keywords关键字
  • Identifiers变量的名称
  • Literals可用于变量的值,硬编码的值

 

文档目录结构

  • manifests——权限相关
  • java——layout还有代码

 

本课程适用Android  Studio作为编程的工具

程序的结构Component Tree—— 顶端是Linear Layout

值可以refer到strings.xml ,使用Resources连接

 

Android的MVC 设计思路:

  • Module: POJO. Plain Old Java Object. Java Object (Class)
  • View: XML.
  • Control: Java. but Activity

Java的网站的MVC设计思路

  • Module: POJO
  • View: JSP,ASP
  • Control: Servlet

 

Java final keyword

  • 类似于Swift 的 let关键字
  • Final means cannot re-assign value to any variable
  • Static means only one copy of reference can be in hole in the class of all methods.

 

Doing things fast
Stand alone obj 可以方便调试,使用对单个Java文件采用Run as main(右键菜单),定义一个main function.

 

 

 

 

Lecture 2

import some class

  • package: java
  • subpackage: lang
  • class: System

 

Java--(Compile)-->Bytecode--(Run)-->App

Compile: Syntax Errors
Run: Runtime Errors
Compute Wrong Result: Logic Errors

 

 

 

 

Week 1 Review

双重虚拟机相当的慢,类似OC Delegate的方法能够自动填充delegate的方法。

 

 

 

Lecture 3

到了第二周,这些课都是讲一些非常基础的内容。下周会有一个Quiz,可以在课室使用网络完成,也可以使用答题卡完成。

Attributes (Global variables)
Constructors

For Method

  • name: Compute
  • params: int, double
  • Above all are Signature

Overloaded, method的name是相同的

int +- 2G 4byte
long +- 2E 8byte
float +- 10^38 Significant Digits = 7
double +- 10^308 Significant Digits = 15

Accuracy is Significant Digits.

Constant 采用 THIS_WAY_TO_DEFINE

Boolean Type

  • g = x ^ y 为XOR 运算
  • 左移( << )、右移( >> ) 、无符号右移( >>> ) 、位与( & ) 、位或( | )、位非( ~ )、位异或( ^ ),除了位非( ~ )是一元操作符外,其它的都是二元操作符。

符号

  • Parentheses ()
  • Bracket []
  • Braces {}

运算顺序(即使有类型转换,也要遵守这个运算顺序)

  1. ()
  2. */%
  3. +-
在运算符号的左右,如果其中任何一个是浮点值,则运算结果为浮点值;如果两者都不是浮点值,则为整型。

printf() print something with formating

  • %d decimal
  • %f

 

 

 

 

Lecture 4

Unicode 64K codes

SCAII

  • A 65
  • ZERO 48
  • space 32
  • a 97

Relational Operators

  • Requirements
  • Design
  • Implementation
  • Testing
  • Deployment

Project Satellite Orbital Period

  • Requirement Analysis
    • Significant Digits
    • The format of output
  • Design
  • Implementation
  • Testing
  • Deployment

 

 

 

 

Week 2 Review

在自己定义的Class中添加toString() 可以在调试的情况下,让程序自动标记Object的名称

 

 

Lecture 5

下节课考试。

定义科学计数法

Math Library

 

 

 

 

Lecture 6

Typically, class don't have main() method except the UI class.

Object

  • state
  • object

 

 

 

 

Lecture 7

new  代表创建一个object,new 关键字  copy 一个class的定义将其布置到object里面。

Heap https://en.wikipedia.org/wiki/Heap_(data_structure)

Stack https://en.wikipedia.org/wiki/Stack_(abstract_data_type)

注意这些的区别

  • Object reference (数指向object的指针)
  • identical Object (内容一样)
  • Objects in memory (数 new 关键字)

对比Object的内在值(检查),使用默认(Default)的equals()函数需要注意。一般情况需要自己在Class中定义equal()

同样的Default的函数还有  toString()

如果需要可以override 这个 toString(),当然不需要以下关键字

如果定义为static,对象将会依赖于 Class 而不是Object

 

 

 

 

Lecture 8

例子

正确的解决方法应该使用以下函数。

从输出结果可以看出,声明区域将早于初始化函数执行。

关于  java.util.Date
epoch Jan 1, 1970 12:00 AM GMT

https://docs.oracle.com/javase/6/docs/api/java/util/Date.html

 

 

 

 

Lab test 1

Period: one hour

CLR, TONE, ROCK

Question will be asked to change those lab works.

关于Submission

https://webapp.eecs.yorku.ca/submit/

 

 

 

 

Lecture 9

Control Structures.

  • sequence 顺序结构
  • selection 选择结构
  • iteration 循环结构
对于本课程,创建符合要求的新工程最简单的方法是复制LOL

 

 

 

 

Lecture 10

 

 

菜单中 Code->Reformat Code...可以整理代码

 

输出格式(高额金额的输出格式)

 

 

 

Lecture 11

 

提取TextView内容

 

 

 

Use of scrollView

scrollView 可以内含 LinearLayout 这样可以确保组内元素的有序性

 

如果要求中含有 take as precondition 可以不用验证数据

 

 

Lecture 12

 

do documentation

Java 和 C系列语言一样,String应该用equal函数进行比较。

 

Test1 Review

 

 

 

Lecture 13

  • Math.pow(底,指数)
    • 注意指数可能会被取整
  • Math.sqrt()
  • Math.cbrt()

 

Formatted Output 的几个例子

\%(\,)?((0)?\d+)?d

\%(\,)?((0)?\d+)?(\.\d+)?f

 

字符串的基本操作

  • String.substring(开始位置,结束位置) 包含开始位置,结束位置将不包含
  • String.charAt(位置)
  • String.length() 获取字符串长度

 

如果是仅仅包含数字的字符串

  • + coercion
    • charNumber + "0" = Char
  • parse
    •  Integer.parseInt(字符串)
    •  Double.parseDouble(字符串)
  • char minus '0'

字符串的变形

  • toLowerCase()
  • toUpperCase()
  • trim()

字符串的比较

  • equals()
  • compareTo()
    • 比较两个字符串的的字符大小
    • 主要看正负,用于英文字符串的排序
    • 返回数字
  • empty的字符串还是 null的字符串
    • 如果null:s.length() 将会给出错误

片段处理

  • indexOf(需要查找的字符)
  • indexOf() with offset
  • replaceAll()

Lecture 14

正则表达式

加拿大邮编  ([A-VXYa-vxy][0-9][A-Za-z] *[0-9][A-Za-z][0-9])

 

Lecture 15

回去验证一下 pattern.find() 这是一个指针,没有利用group()的方法,两个应该是独立的,不应该相互使用

  • Regex
    • Matches:
      • 包含find()
    • Groups:
      • 包含group() groupCount()
      • 将返回正则表达式中括号匹配的内容
      • group(0) 将返回find() 的内容
      • group(N) N >=1 将安顺序返回正则表达式中括号的内容

 

字符串比较可以使用  x.equals(y) 或者 x.equalsIgnoreCase(y)

 

 

Lecture 16

Collections Framework

Aggregation (集合) 将多个Object存储到一个object中

  • Array 是 Static Allocation 并且没有API
  • 一些集合的(Aggregation)数据结构有 Interfaces例如 List<E>, Set<E>, Map <K,V>

 

  • List : 允许重复,有序
    • ArrayList 更类似Array
    • LinkedList 更便于插入,使用指针存储
  • Set : No duplicates, No order,使用.equals 比较Object(待查)
    • HashSet 是无序的
    • TreeSet 是有序的(sorted)使用.compareTo() 来排序
  • Map :  Key and Value
    • HashMap 是无序的
    • TreeMap 是有序的(sorted)使用.compareTo() 来排序

 

API 关于这些Aggregation的APIs

  • size()
  • clear()
  • iterator()

 

Lecture 17

注意使用 Code -> Code Generate 来创建默认的函数,例如:

  • constractor
  • Getter / Setter
  • toString()
  • equals()
  • compareTo()

 

Lecture 18

Toast.makeText(显示对象,字符串,时间);

显示对象为this.getApplicationContext()

 

 

Lecture 19

Pick up class test #1 in WSC(lab) next week

  • Basic
    • size()
    • clear()
    • iterator() reach each elements in the collection
  • Set
    • add(E)
    • remove(E)
    • contains(E)
  • List
    • add(int, E) 从零开始,到字符串长度,如果int是[0,length]以外的值就出错
    • remove(int)  从零开始,如果移除失败则抛出错误
    • get(int) 从零开始,如果获取失败则抛出错误
    • contains(E)
  • Map
    • put(K, V) 相同Key 会覆盖,后面的值覆盖前面
    • get(K) 获取Key对应的值
    • keySet() 获取一个由Map键值为类型的Set
    • containsKey(K) 检查是否有键
    • containsValue(V) 检查是否有值
    • remove(K) 填入键名,如果不存在不回抛出错误
  • Other API (import java.util.Collections;)
    • f(type item:collection)()
    • Collections.sort(List) Only Accept List
    • Collections 更多函数

 

Set 无法使用index,因此无法进行随机访问

回去复习这些API的用法,做幻灯片里面的练习。老师上课讲错了。。。

 

Lecture 20

Exception Handling

  • Pre Condition (相当于没有防御)
  • Defensive(使用if,可预见的例外)
  • Exception(不可见例外)

 

 

 

Lecture 21

 

 

这篇博文发表在 专业笔记 目录下,标签为
版权所有,请勿转载。如需引用,请使用链接:https://note.masterchan.me/?p=845
 

您的邮箱地址不会被公开,评论使用Gravatar头像。
Your email address will not be published. This blog is using Gravatar.

正在提交评论...
正在为您准备评论控件