1、Java快速入门

第一课 Java基础
1. ubuntu上环境搭建 (建议使用我们提供的VMWare映象文件)
如果要自己安装ubuntu, 请参考<韦东山Android系统视频使用手册.pdf>
ubuntu 12.04.5 这是一个长期支持的版本
硬盘空间至少预留80G
a. root分区 : 20G, 从其中划出6G用作swap
b. work分区 : 60G
c. 内存 : 4G

安装Java开发环境
sudo apt-get update
sudo apt-get install openjdk-7-jdk
sudo apt-get install openjdk-7-jre

2. 第1个JAVA程序 (和C对比)

编译的方法:javac Hello.java

运行的方法:java hello

3. JAVA数据类型
基本数据类型:boolean, byte, char(2字节), short, int, long, float, double
引用数据类型:数组、类对象、接口(引用数据类型指的是变量所指向的数据在堆中,比如:int p2[] = {1,2,4},数据1,2,4在堆中,p2在栈上,其值是堆的地址),引用和C语言中的指针比较类似

引用数据类型使用new来分配,不需要自己释放,把变量设为null即可

栈内存、堆内存
数据类型转换(自动转换(发生的前提是数据转换后不会丢失), 强制转换)

short s=1;s=s+1会出错,因为对于byte,short的运算,为了保证精度,会自动转换为int,其不能直接赋给short类型,改为s=(short)(s+1)

sourceinsight编写的文件是以ascii码编译的,java编译器是以UTF-8来解析字符的,所以如果文件中存在汉字,会存在无法解析的情况,所以需要使用UE把该文件转换成UTF-8格式

4. 语句:跟C完全一样

5. 方法(函数)

6. 方法重载、参数传递

重载指的是函数名相同,参数类型或者参数个数不同,返回值类型的不同不是重载

int p[] = new int[1];p[0]=123;fun2(p);这个时候p[0]的值会改变(public static void fun2(int[] p){p[0]=100})

第二课 面向对象程序设计
1. 类的引入
C语言是面向过程的
出一道题:写一个程序,输出张三、李四两个人的姓名

定义一个类(class  A),实例化这个变量(A a),a就是个对象

构造函数格式:public 类名称(类型 参数......)//其没有返回值,可以有多个构造方法

{

  语句;

}

static修饰的类方法属于类,通过“类名.方法”来调用

在类中通过一个大括号”{}”括起来的就是构造块,通过构造块扩起来的代码在任何构造函数被调用之前会被调用执行

大括号“{}”之前加上一个static修饰就是静态代码块,实例化第一个对象之前执行,并且只执行一次,在执行构造块和构造方法,再之后实例化都不会再次执行静态代码块。

类中的main函数通过static修饰是为了让虚拟机不用实例化对象就能执行main函数

2. 封装性

private修饰的变量和方法只能被类的内部方法所访问,不能被外部所访问

private本类可访问;default本包可访问;protected本包、其他包的之类可访问;public所有都可访问

3. 继承性

实例化子类对象时,先调用父类的构造方法,再调用子类的构造方法(如果子类构造函数中没有super等语句,在子类的构造函数中第一行默认会添加一句super();表示调用父类的默认无参构造函数);

如果父类有个构造方法是“类名(参数1)”,则在子类构造方法中第一句加上“super(参数1)”,在实例化一个对象时会先调用父类的构造方法“类名(参数1)”

final类不能有子类;final方法不能被覆写;final变量变成常量,不能被修改

继承的限制:1、父类的private修饰属性和方法不能被之类继承,对应私有属性,如果有公开的方法获得私有属性,子类可以调用该方法

      2、子类覆写的方法不能缩小权限,比如父类的public方法a,子类也只能覆写为public;

在class前加上abstract修饰的类是抽象类,其类内部除了有属性、普通方法外还有抽象方法()在方法的访问权限和返回值之间加上abstract修饰的方法),抽象方法仅需要声明,不需要实现;

抽象类不能实例化对象,子类必须覆写全部抽象方法;

接口:interface 接口名称{全局常量;抽象方法}

接口和抽象类相似,其模板作用,子类可以继承多个接口,子类必须覆写全部抽象方法

(子类只能extends继承一个父类)

class A extends D implements B,C{}//B和C是接口,D是普通类火灾抽象类

4. 多态性

5. 异常
参考文章:
深入理解java异常处理机制
http://blog.csdn.net/hguisu/article/details/6155636


6. 包和权限
javac A.java // 将在当前目录下生成A.class
能否把这些class文件存放于其他目录呢?

jar -cvf my.jar a // 把包a创建为压缩文件my.jar

export CLASSPATH=.:my.jar

7. 内部类

第三课 JNI (Java Native Interface)
1. JAVA调用C
Linux是用C语言写的,可以写一个APP简单调用open,read,write来访问驱动程序;
Android是用Java写的,Java怎么访问C函数?

jni.pdf P117

Android JNI知识简介
http://blog.csdn.net/linweig/article/details/5417319

Android JNI(实现自己的JNI_OnLoad函数)
http://jjf19850615.blog.163.com/blog/static/356881472013342153912/


查看"JNI field descriptors" (JNI字段描述符)
javap -s -p Var.class
JNINativeMethod的参数解析
http://carywei.iteye.com/blog/1075647
http://cs.fit.edu/~ryan/java/language/jni.html
http://blog.csdn.net/conowen/article/details/7524744


2. C调用JAVA
jni.pdf P97

http://blog.csdn.net/lhzjj/article/details/26470999

4步骤:
a. 创建虚拟机
b. 获得class
c. 实例化对象 : 获得构造方法(方法名为"<init>"), 构造参数, 调用方法
d. 调用方法 : 又分为获得方法, 构造参数, 调用方法

读取/设置类中的属性:
a. 获得属性ID
b. 读取/设置

第四课 JAVA高级应用
1. 泛型(Generics)

2. 反射(Reflect)

猜你喜欢

转载自www.cnblogs.com/liusiluandzhangkun/p/9102970.html