Java For Android 教程
第一章 开发环境
一 Java SDK 下载与安装
二 什么是环境变量
环境变量通常是指在操作系统当中,用来指定操作系统运行时需要的一些参数;
环境变量通常为一系列的 键值对 ;
三 Path 环境变量的作用
Path 环境变量是操作系统外部命令搜索路径
四 classpath 环境变量的作用
classpath 环境变量是类文件搜索路径
键值对 classpath - "." 表示当前文件夹下
五 JDK里面有什么?
bin 文件夹:所有 Java 用到的命令 javac:编译命令 java:运行命令
demo 和 sample 文件夹:Java例子
include:C语言程序
jre 文件夹:java运行时环境
lib 文件夹:java所需要的包文件
src 压缩包:java JDK一部分源文件
六 什么是JRE
JRE是Java Runtime Environment,即 Java 运行环境,包括以下的几个部分:
Java 虚拟机;
Java 平台核心类文件;
其他支持文件;
第二章 Java 编程基础
一 Java 数据类型
1 什么是变量
2 变量的声明办法
变量类型 变量名;
int age;
3 变量有哪些类型
基本数据类型:数值型(整数类型,浮点类型)、字符型(char)、布尔型(boolean)
引用数据类型:类(class)、接口(interface)、数组
4 变量的赋值
变量类型 变量名 赋值号 变量值 ;
int age = 20 ;
5 变量的命名规范
变量名语法归法
应该以字符、下划线或者美元符开头;
后边跟字母、下划线、美元符或者数字;
Java 变量名没有长度限制;
Java 变量名对大小写敏感
驼峰命名发
变量名应该用有意义的英文单词;
变量名如过只有一个单词,则又有字母小写;
变量名如果由多个英文单词组成,则从第二个单词开始首字母大写;
6 布尔型变量
boolean 类型适用于逻辑运算,一般用于承诺工序流程控制
在 Java 当中的 boolean 类型只有两种取值: true 和 false;
不能用0和非0,或者空和非空来表示;
7 字符型变量
char 类型数据用来表示通常意义上的字符;
字符是由单引号包括起来的单个字符
char c = 'a';
char b = '中';
Java 字符使用 Unicode 字符集;
Unicode 字符集为每种语言的每个字符设定了统一并且唯一的二进制码;
Unicode 满足了跨语言文本转换和处理的需求;
Unicode 在互联网当中扮演着非常重要的角色;
unicode 使用数字0-0x10FFFF来表示字符;
最多允许有1114112个字符
8 数值型变量
数值型变量分为两大类
整数类型:
byte1字节 -128 ~ 127
short2字节 -2^15 ~ 2^15-1
int4字节 -2^31 ~ 2^31-1
long8字节 -2^63 ~ 2^63-1
浮点类型:
float4字节 -3.403E38 ~ 3.403E38
double8字节 -1.798E308 ~ 1.798E308
9 整数类型
Java 语言整型常量的三种表示形式;
十进制整数,如12,-313,0
八进制整数,要求以0开头,如012
十六进制数,要求以0x或0X开头,如0x12
Java语言的整形常量默认为 int 型,如
int i = 3 ;
声明 long 常量 可以后加‘l’或‘L’,如
long l = 3L ;
10 浮点类型
二 Java 运算符与表达式
1 运算符
算数运算符:+ - * / % ++ --
关系运算符:> < >= <= == !=
逻辑运算符:! & | ^ && ||
位运算符: & | ^ ~ >> << >>>
赋值运算符:=
扩展赋值运算符:+= -= *= /=
字符串连接运算符:+
逻辑晕算法:
!——逻辑非 &——逻辑与 |——逻辑或
^——逻辑异或 &&——短路与 ||——短路或
2 表达式的类型和值
表达式:是符合一定语法规则的运算符和操作符的序列:
i
10.5+i
(i+j)-2
表达式的值:对表达式中操作数进行运算得到的结果成为表达式的值
表达式的类型:表达式的值的数据类型即为表达式的类型
三 分支语句
1 程序流程的分类
顺序结构
分支结构
循环结构
2 if……else结构
语法结构
if(逻辑表达式){
语句;
语句;
}
else if(逻辑表达式){
语句;
语句;
}
else{
语句;
语句;
}
3 Switch结构
语法结构
switch(表达式){
case 常量1:
语句;
break;
case 常量2:
语句;
break;
default:
默认语句;
break;
}
四 循环语句
1 for 循环语句
2 while 循环语句
五 函数的定义方法
第三章 面向对象基础
终极目标:消除程序中的重复代码
基本概念
面向对象程序设计中的概念主要包括:对象、类、数据抽象、继承、动态绑定、数据封装、多态性、消息传递。通过这些概念面向对象的思想得到了具体的体现。
对象 对象是运行期的基本实体,它是一个封装了数据和操作这些数据的代码的逻辑实体。
类 类是具有相同类型的对象的抽象。一个对象所包含的所有数据和代码可以通过类来构造。
封装 封装是将数据和代码捆绑到一起,避免了外界的干扰和不确定性。对象的某些数据和代码可以是私有的,不能被外界访问,以此实现对数据和代码不同级别的访问权限。
继承 继承是让某个类型的对象获得另一个类型的对象的特征。通过继承可以实现代码的重用:从已存在的类派生出的一个新类将自动具有原来那个类的特性,同时,它还可以拥有自己的新特性。
多态 多态是指不同事物具有不同表现形式的能力。多态机制使具有不同内部结构的对象可以共享相同的外部接口,通过这种方式减少代码的复杂度。
动态绑定 绑定指的是将一个过程调用与相应代码链接起来的行为。动态绑定是指与给定的过程调用相关联的代码只有在运行期才可知的一种绑定,它是多态实现的具体形式。
消息传递 对象之间需要相互沟通,沟通的途径就是对象之间收发信息。消息内容包括接收消息的对象的标识,需要调用的函数的标识,以及必要的信息。消息传递的概念使得对现实世界的描述更容易。
方法 方法(Method)把执行的代码整合在一个方法中,当需要做这些动作的时候直接通过调用这个方法而达到使用的目的。
一 面向对象与面向过程语言之间的区别
1. 什么是面向对象?
面向对象是一种变成方法;
面向对象是一种思维方式;
面向对象不是一种编程语言。
2. 如何学习面向对象?
掌握一门面向对象语言的语法;
掌握面向对象的思维方式;
熟悉面向对象设计原则
掌握面向对象设计模式
3. 什么是面向对象思维方式?
首先确定谁来做,其次确定怎么做;
首先考虑整体,其次考虑局部;
首先考虑抽象,其次考虑具体。
二 类
1. 创建类的方法
定义类的方法
class className{
属性;
方法;
}
属性也叫成员变量,主要用于描述类的状态
方法也叫成员方法,主要用于描述类的行为
类的表示方法
类名:
成员变量:
成员方法:
类的实例:
class Person{
int age;
void shout(){
System.out.println("oh, my god! I am " + age);
}
}
2. 生成对象的方法
格式:ClassName objectiveName = new ClassName()
例如:
Dog dog = new Dog();
类和对象的关系
类是抽象的
对象是具体的
4. 对象的使用方法
使用对象调用变量和方法——“.”
对象.成员变量
对象.成员方法()
例如:
Dog dog = new Dog();
dog.name = "Wang Cai ";
dog.age = 2;
dog.color = "black";
d.jump();
5. 多对象的创建方法
使用 new + 构造函数来创建新的对象。
Dog d1 = new Dog();
Dog d2 = new Dog();
6. 匿名对象的创建和使用方法
可以不定义对象的引用名称,而直接调用这个对象的方法。这样的对象叫做匿名对象。
new Dog().jump();
匿名对象通常都是一次性的。
三 函数的重载
1. 函数的重载
在一个类中,允许函数的重名这种情况的出现,这中现象叫函数的重载。
例如:
class A{
void funA(){
System.out.println("没有参数的funA函数");
}
void funA(int i){
System.out.println("拥有一个整形参数的funA函数");
}
}
构成函数重载的定义标准:
两个或多个函数处于同一个类当中;
函数名相同;
各函数的参数列别不同。
调用类的函数时,通过传输的不同参数来区别具体使用了哪个函数。
作用为根据操作参数的不同而执行不同的代码。
2. 构造函数
构造函数是一种特殊的方法,主要用来在创建对象时初始化对象。即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数,可根据其参数个数的不同或参数类型的不同来区分它们,即构造函数的重载。
构造函数的特征:
构造函数没有返回值类型;
构造函数的名字必须和类名相同;
当类中没有构造函数的情况下,编译器在编译代码时,会默认添加无参数且方法体为空的构造函数;
当类中有构造函数的情况下,编译器不会再添加默认构造函数。
主要作用:
使用new+构造函数生成一个对象;
自行编写构造函数,来简化为成员变量赋初始值的代码。
四 this 关键字的作用
1. 使用this调用成员变量和成员函数
class Person{
String name;
void talk(){
System.out.println("my name is" + this.name);
}
}
上面的this可以省略。
class Person{
String name;
void talk(String name){
System.out.println("my name is " + name);
}
}
上面的方法体中的name是调用传入的参数,如想使用成员变量的name,则需如修改:
class Person{
String name;
vodi talk(String name){
System.out.println("my name is " + this.name);
}
}
this起到区分成员变量和参数的作用。
2. 使用this调用构造函数
对this的调用必须是构造函数的第一个语句
this();
class Person{
String name;
int age;
String adress;
Person(){
System.out.pringln("无参数构造函数");
}
Person(String name, int age){
this();
this.name = name;
this.age = age;
//前者是调用成员变量,后者是传入的参数
System.out.println("两个参数的构造函数");
}
Person(String name, int age, String address){
this(name,age);
//根据参数的个数和类型调用本类中相应的其他构造函数,
this.address = address;
System.out.println("三个参数的构造函数");
}
void talk(){
System.out.println("my name is" + this.name);
}
}
五 static 关键字的作用
static关键字的作用:
定义静态成员变量;
定义静态函数;
定义静态代码块。
1. 静态成员变量的语法特点
用法:在成员变量数据类型名前加static关键字
class Person:
class Person{
static int i;
}
class Test:
class Test{
Public static void main(String args []){
Person.i = 10;
}
}
静态成员变量可以不生成对象而直接使用类名调用;
静态成员变量在所有此类的对象中都使用同一个值,一个对象进行修改,所有的对象都会进行改变。
2. 静态函数的语法特点
用法:在函数返回值类型名前加static关键字
class Person:
class Person{
static int i;
static void fun(){
System.out.println("我是静态函数");
}
}
class Test:
class Test{
Public static void main(String args []){
Person.fun();
}
静态函数可以不生成对象而直接使用类名调用;
不能在静态函数中引用非静态的变量。
3. 静态代码块的语法特点
用法:在代码块前加static关键字
class Person{
static{
System.out.println("静态代码块");
}
static int i;
static void fun(){
System.out.println("我是静态函数");
}
}
静态代码块在装载类时执行,就是只要执行这个类就会执行静态代码块。
主要作用是为静态成员赋初始值。
第四章 面向对象高级
面向对象的三个特征:继承、封装、多态。
一 继承
1. 什么是继承?
在面向对象的世界当中,继承就是一个类得到了另一个类当中的成员变量和成员方法。
Java中只支持单继承,即一个子类只允许继承一个父类,但一个父类可以拥有多个子类。
class Person
class Person{
String name;
int age;
void eat(){
System.out.println("吃饭");
}
void introduce(){
System.out.println("我的名字是" + name + ",我的年龄是" + age);
}
}
class Student
class Student extends Person{
}
用法,在定义子类时,在子类名后加 extends 关键字 和父类名。
子类中还可以加入自身特有的成员变量和成员方法。
class Student
class Student extends Person{
int grade;
void study(){
System.out.println("学习");
}
}
2. 为什么要使用继承
将各子类中共同的成员变量和成员方法集中到父类中,减少重复代码;
方便集中修改代码。
3. 继承的基本语法特点
子类继承父类的成员变量和成员方法。
子类中添加自身特有的成员变量和成员方法。
多线程与多进程
多进程:
在操作系统中能(同时)运行多个任务(程序)
多线程:
在同一应用程序总有多个顺序流(同时)执行