一、android系统的基本框架如图一所示,应用程序是用java编写的,底层驱动是用C代码写的,java与C怎么连接在一起主要是通过本地服务。android系统的核心主要在于framwork层.
二、
2.1 第一个java程序:需要注意的是类的命名,首字母必须要是大写,而且文件的名字要跟类名保持一致。
public class Hello{
public static void main(String args[]){
System.out.println("Hello,World!");
}
}
编译运行命令如图二:
编译
javac Hello.java
此时会在当前文件夹生成 Hello.class 文件
2.2 循环打印的例子:
public class Hello{
public static void main(String args[]){
int i = 0;
for (i = 0;i < 3;i ++){
System.out.println("Hello World");
}
}
}
编译运行命令如图三:
2.3 java与C语言的数据类型对比如图四,java中无指针类型的数据,有引用类型的数据.java中字符串是一个string类。数据不丢失的前提下可以自动转换,
图四
public class Var {
public static void main(String args[]) {
/*
用source sight写的代码默认编码都是ascii,而java编译器是以utf-8来解析这些字符的
当我们使用汉字的时候,就无法用utf-8来解析,所以有两种方式:
1.去掉汉字 2.将汉字转换成utf-8
使用UE打开默认是DOS就是ascii,进行转换
*/
int a = 3;
float f = (float)3.14;
float f2 = 3.14f;
int i = 4;
short s = 4;
short s2 = (short)40000;
//s = i;
s = (short)(s + 1);
s = (short)(s + s2);
/* Java has no pointer java里面没有指针和malloc函数*/
//int* p = malloc(10*sizeof(int));
//那么java里面就采取这种方式
int p[] = new int[10];
int p2[] = {1,2,4}; /* static alloc 静态分配数组*/
//char str[100]; //c语言中是这样定义一个数组的
//java里面就需要这样来定义数组
char str[] = new char[100];//str变量是在栈里,内容是在堆上
//char str2[] = "abc";
//java里面定义一个字符串
String str2 = "abc";
p = null;
p2 = null;
str = null;
str2 = null;
}
}
数据类型转换
自动转换
数据不丢失的前提下可以自动转换
int a=30;
long b = a; // 自动转换,因为long的表示范围比int大
float c = 3.1
int d = (int)c; // 必须使用强制转换
注意:整数默认是int,有小数时默认是double
强制转换
例子
byte b= 1;
short s= 3;
编译器会判断该值有无超过该变量的表示范围,如果超过就报错。
short s = 1;
s = s + 1; // 出错,因为对于byte,short的运算,为了保证精度,会自动转换为int类型
s = (short)(s + 1);
short s2 = 1;
s = s + s2; // 出错,理由同上
相关代码:
public class Var{
public static void main(String args[]){
int a = 3; //整数默认是int,
float f1 = (float)3.14; //有小数时默认是double,因此这里需要转换不然数据精度会丢失
float f2 = 3.14f;
int i = 4;
short s = 4; //数据不丢失的前提下可以自动转换
short s2 = (short)40000; //超过数据范围,需要强制转换
//s = i;
s = (short)(s + 1); //,因为对于byte,short的运算,为了保证精度,会自动转换为int类型,因此等号右边需要强制转换
s = (short)(s + s2);
//int* p = malloc(10*sizeof(int));
int p[] = new int[10];
int p2[] = {1,2,4}; // static alloc
// char str[100];
char str[] = new char[100];
//char str2[] = "abc";
String str2 = "abc";
p = null;
p2 = null;
str = null;
str2 = null;
}
}
2.4与C语言相比,Java的函数可以进行重载的操作,对函数的个数以及函数参数的类型也能够进行重载.相关代码如下
方法名相同
参数类型或个数不同
返回值可以相同也可以不同
public class Function{
public static void main(String args[]){
System.out.println(add(1,2));
System.out.println(add(1,2,3));
System.out.println(add(1.0f,2.0f));
}
public static int add (int x,int y){
return x + y;
}
public static int add (int x,int y,int z){
return x + y + z;
}
public static float add (float x,float y){
return x + y;
}
}
编译运行结果如下图:
2.5函数传递参数,如果要修改传递的参数要使用指针,相关代码如下:
参数
基本数据作为参数
- 方法内部对参数的修改不影响调用者
引用数据作为参数
- 方法内部修改了堆,结果会保留下来
public class Param {
public static void main(String args[]) {
int x = 1;
fun (x);
int p[] = new int[1];
p[0] = 123;
System.out.println("Before fun2: "+p[0]);
fun2(p);
System.out.println("After fun2: "+p[0]);
System.out.println(x);
}
public static void fun(int x) {
x = 100;
}
public static void fun2(int[] p) {
p[0] = 200;
}
}
编译运行执行结果: