Android Development Course in HSE lecture #2
description
Transcript of Android Development Course in HSE lecture #2
![Page 1: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/1.jpg)
Java for Android Development
![Page 2: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/2.jpg)
Object-Oriented Programming Concepts
![Page 3: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/3.jpg)
Comments
/* multilinecomment */
// singleline comment
/** Description * * @param input * @return output */
![Page 4: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/4.jpg)
Primitive Data Types
● byte (8-bit signed integer between -128 and 127)
● short (16-bit signed integer between -32,768 and 32,767)
● int (32-bit signed integer between -2,147,483,648 and 2,147,483,647)
● long (64-bit signed integer between -9,223,372,036,854,775,808 and 9,223,372,036,854,775,807)
● float (32-bit floating point number)
● double (64-bit floating point number)
● boolean (true and false)
● char (single 16-bit Unicode character)
![Page 5: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/5.jpg)
Operators
![Page 6: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/6.jpg)
if (a > 0) {// ...
} else if (a == 0) {// ...
} else {// ...
}
If
![Page 7: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/7.jpg)
boolean a;if (a == true) ...if (a == false) ...if (a) ...if (!a) ...
![Page 8: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/8.jpg)
switch
switch (code) {case 200:
// ...break;
case 404:// ...break;
default:// ...break;
}
![Page 9: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/9.jpg)
Loops
● while● do-while● for● for-each
![Page 10: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/10.jpg)
while
int n = 10while (n > 0) {
n--;}
![Page 11: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/11.jpg)
do
n = 10;do {
n--;} while (n > 0);
![Page 12: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/12.jpg)
for
for (int i = 0; i < 100; i++) {//...
}
![Page 13: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/13.jpg)
for-each
for (Object o : objects) {System.out.print(o.toString());
}
![Page 14: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/14.jpg)
Branching statements
● break● continue● return
![Page 15: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/15.jpg)
Arrays
![Page 16: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/16.jpg)
String
● Immutable● StringBuilder
● Никогда не проверяйте равенство строк с помощью == !!!
![Page 17: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/17.jpg)
![Page 18: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/18.jpg)
Class
● class MyClass {...}
● instance (object)
● fields
● methods
● inner and nested classes
● this
● final
● static
![Page 19: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/19.jpg)
![Page 20: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/20.jpg)
import
● import java.util.List;● import org.apache.http.HttpEntity;● import org.json.JSONObject;● import android.content.SharedPreferences;● import com.inflow.model.Feed;● import java.io.IOException;
![Page 21: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/21.jpg)
Access Modifiers
![Page 22: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/22.jpg)
Inheritance
● class MyClass extends BaseClass {...}
● super
● @Override
![Page 23: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/23.jpg)
![Page 24: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/24.jpg)
Abstract Classes and Methods
● abstract class MyClass {...}● abstract void myMethod {...}
![Page 25: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/25.jpg)
![Page 26: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/26.jpg)
![Page 27: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/27.jpg)
Interfaces
● interface● class MyClass implements MyInterface
![Page 28: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/28.jpg)
![Page 29: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/29.jpg)
java.lang.Object
○ public String toString();
○ public boolean equals(Object obj);
○ public native int hashCode();
○ protected native Object clone() throws CloneNotSupportedException;
○ protected void finalize() throws Throwable;
○ public final native Class<?> getClass();
○ public final native void notify();
○ public final native void notifyAll();
○ public final native void wait(long timeout) throws InterruptedException;
○ public final void wait(long timeout, int nanos) throws InterruptedException;
○ public final void wait() throws InterruptedException;
![Page 30: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/30.jpg)
equals()
● Рефлексивность: x.equals(x) -> true при x не null;
● Симметричность: x.equals(y) <- -> y.equals(x) при x,y не null;
● Транзитивность: x.equals(y), y.equals(z) -> x.equals(z) при x,y,z не null;
● Непротиворечивость (consistency) «одинаковых» вызовов;
● x.equals(null) – всегда false (при x не null).
![Page 31: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/31.jpg)
hashCode()
● Метод hashCode() надо переопределять в каждом классе,
переопределяющем метод equals().
● Контракт метода hashCode():
■ Непротиворечивость (consistency), «осмысленно» возвращает то же число;
■ Равные по equals() объекты дают равные значения hashCode();
![Page 32: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/32.jpg)
Nested Classes
class OuterClass { ... static class StaticNestedClass { ... }}
MyOuterClass.MyStaticNestedClass myObject = new MyOuterClass.MyStaticNestedClass();
![Page 33: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/33.jpg)
Inner classes
class OuterClass { ... static class StaticNestedClass { ... } class InnerClass { ... }}
OuterClass.InnerClass innerObject = outerObject.new InnerClass();
![Page 34: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/34.jpg)
Anonymous classes
button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {
//...}
});
![Page 35: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/35.jpg)
Enums
public enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }
![Page 36: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/36.jpg)
Exceptions
● try● catch● finally● throw
![Page 37: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/37.jpg)
Collections
● List● Set● Map● Queue● Stack● ...
![Page 38: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/38.jpg)
Extra topics
● Reflection● Threading● Generics
![Page 39: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/39.jpg)
Literature
● Cay Horstmann Core Java● Bruce Eckel Thinking in Java
![Page 40: Android Development Course in HSE lecture #2](https://reader034.fdocuments.net/reader034/viewer/2022051314/554dfed6b4c90597278b487d/html5/thumbnails/40.jpg)
Practice
● любая предметная область● наследование● абстрактный класс● интерфейс