Google选用了Java作为Android的开发语言,所以在学习Android以前,你需要掌握一些Java的基础知识。
Java程序的基本结构
下面是一个简单的Java程序,我们将通过它来讲解Java程序的基本结构。
public class Main {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
-
运行方法:
- 在桌面创建一个文本文档,将文件名更改为Main.java;
- 用记事本打开Main.java,输入以上代码(注意大小写);
- 按
Windows+R
,在弹出的窗口中输入cmd,点击确定,输入:cd desktop
,回车(也可以按住shift
然后在桌面空白目录点击鼠标右键,然后选择:在此处打开命令窗口); - 输入
Javac Main.java
,如果没有任何提示证明编译成功,可以继续下一 步。如果出现错误提示,由于可能的问题很多,请自己想办法解决; - 输入
java Main
,如果一切正常你将看到屏幕上输出了:Hello World
,
如果未能得到此结果,请自行解决。
注:以后的Java程序都以这种方式运行,不再重复书写运行方式。
-
代码分析
- 关键字
public
称为访问修饰符,用于表示一个程序的其他部分对这段代码的访问权限,访问修饰符的更多内容将在后面介绍; - 关键字
class
用于表示这是一个类。类是Java的重要组成部分,后面会进行详细讲解,这里仅需要将它当成一个存放程序逻辑的容器。 -
class
后面的Main
这个类的名字(类名需首字母大写,后跟任意字母数字组合,但不能使用Java保留字,此外类名必须与文件名一致)。 -
public static void main(String[] args)
声明了一个方法(函数),main
是函数名,其余符号后面慢慢讲。
- 关键字
基本结构介绍到这里,不懂的先不管,后面慢慢就会揭晓,下面介绍Java的数据类型。
Java数据类型
和JavaScript
的一个var
吃遍天不同,Java
对于变量有着严格的类型限制。下面对Java
的常用类型做了简单总结。
-
整型
整型用于表示没有小数部分的数值,允许是负数,Java提供了4种整型,具体如下:
类型 | 占用空间 | 存储范围 |
---|---|---|
short | 2字节 | -32 768 ~ 32 767 |
int | 4字节 | -2 147 483 648 ~ 2 147 483 647 |
long | 8字节 | - 9 233 372 036 854 775 808 ~ 9 223 372 036 854 775 807 |
byte | 1字节 | - 128 ~ 127 |
在通常情况下,int
比较常用,如果遇到int
无法存储时再考虑用long
,short
和byte
通常用于特定场合,遇到时再介绍。
-
浮点类型
浮点类型用于表示带有小数部分的数值。Java
中有两种浮点类型,具体如下:
类型 | 占用空间 | 存储范围 | 有效位 |
---|---|---|---|
float | 4字节 | 大约 ±3.402 823 47E +38 | 6 ~ 7位 |
double | 8字节 | 大约 ±1.797 693 134 862 315 70E +308 | 15位 |
在通常情况下,float
的精度很难满足需求,所以一般使用double
,当Android的坐标通常是使用float
,除此之外,尽量用double
。
注:3.402 823 47E +38
是Java里的科学计数法,2.0E +10
表示2.0乘以10的10次方。
-
char类型
char类型用于表示单个字符。例如:char ch = 'A';
注:与JavaScript不同的是,Java
中字符用单引号包含,双引号表示字符串。
-
boolean类型
boolean(布尔)类型只有两个值true
和fasle
。通常用于逻辑换。
注:与C语言不同的是,Java
中整型与boolean类型不能互相转换,例如下面这段代码将产生一个错误:
if(1)
System.out.printf("it will produce an error");
-
String类型
String(字符串)类型用于表示一串用双引号括起来的字符,例如:String str = "abc";
注:严格来说String类型这样的叫法是错误的,因为Java没有内置String类型,而是在标准库中添加了一个名为String的类库。
-
变量声明
java
中的变量声明和JavaScript
类似,首先写上变量类型,然后写上变量名,然后以分号结尾。例如:int a;
。也可以对其进行初始化操作,例如:double c = 1.0;
。
注:和C语言不同的是,在Java
中如果未对变量初始化,数值类型会自动被初始化为0,boolean类型会被初始化为false。
-
常量声明
常量的声明与比较简单,仅需在 变量类型前面添加关键字final
,例如:
final double PI = 3.1415926;
注:常量通常采用全大写。
-
数组声明
数组通常采用以下形式声明:
int[] numbers = new int[4]; //数据类型[] 数组名 = new 数据类型[数据个数];
/*也可以声明时通过大括号进行初始化*/
double[] numbers = new double[] {1.0, 2.0, 3.0}; //采用大括号进行初始化时不能再在[]里填数据个数
数据类型的知识就介绍到这里,下面进入Java的重点内容——面向对象。
面向对象程序设计
我们常说面向对象编程,那什么是面向对象编程呢?这里我先不回答这个问题,随着学习的深入你会有一个自己独特的理解,但肯定不是面对你的女(男)朋友编程的意思。
-
类(class)
类是Java的一个重要组成部分,也是面向对象的编程需要掌握的重要内容。
-
什么是类?
类是一种宏观的概念,例如我们单独说人时就是指的的人类,此时的“人”可以看做一个类,“狗”也可以看成一个类。
-
类之间的关系
整个程序当然不可能只有一个类,不同的类之间可能存在着一些关系。Java
中常见的关系有下列三种:
+ 依赖(uses-a):如果一个类的方法操作另一个的对象,我们就说一个类依赖另一个类。例如:如果将人与狗分别看成一个类,那人遛狗即是一种依赖关系。
+ 聚合(has-a):如果一个类包含了另一个类的对象,那么我们就说这是一种聚合关系。例如:你将狗作为了你的私有属性,那么你们之间就是聚合关系。
+ 继承(is-a):继承可以说是一种扩展关系,我们知道人与人之间是不同的,有白种人、黑种人、黄种人……当不管肤色任何,他们都属于人,那么黄种人类就可以说是继承自人类(其他亦然)。
注:真实情况下继承关系需要特殊的说明。
-
类中有什么?
类中一般存放着一些属性,以及可以执行的操作。比如我们定义一个Person类:
/**
* 定义了一个Person类
*/
public class Person {
/**
* 以下是Person类的一些属性
*/
private int age; //年龄
private String sex; //性别
private String name; //性别
/**
* 这是一个构造方法,用于构造一个Person类对象,构造方法的名字必须和类名一致
*构造器方法没有返回值
*/
public Person(String name, int age, String sex) {
//因为这里有两个name(类中一个,参数一个),为了区分它们通常在本类定义的变量(对象)前添加this.
this.name = name;
this.age = age;
this.sex = sex;
}
/**
* 以下是可以执行的操作
*/
/**
* 吃东西是每一个Person都应该会的,所以我们定义一个eat()方法
*/
public void eat(String food) {
//当然我们不可能真的让它吃东西,简单的打印一下吧
//证明它已经吃了
System.out.println("我吃了" + food);
}
/**
* 走路
*/
public void walk(String place) {
System.out.println("我在" + place + "散步");
}
}
一个人当然不可能只有这么一些操作,为了简单起见,就这样吧。
注:你可能不知道private
和public
的意思,但是没关系,先忽略掉它们。
-
对象
面向对象中的对象终于出现了,有没有一丝小激动呢?
-
什么是对象
对象是类的实例。前面说类是一种宏观概念,那对象就是一个具体的东西了。比如人是一个类,那么具体的一个人就可以说是人类的一个对象,例如:张三就可以说是一个对象。
-
构建对象
创建对象的方法和声明一个变量的方法比较类似,你可以先下面一样声明:
Person zhangsan = new Person("张三", 18, "男");
首先是类名,后跟对象的名字(命名方式同变量),new
关键字用于创建一个对象,还记得之前Person类中的构造器方法吗?new
关键字会调用Person类的构造器方法对对象的属性(实例域)进行初始化,然后将初始化好的对象返回。
好了,Java的基础知识就讲解到这,补充内容上课时再讲,这里的东西有不懂的可以问问部长或者我。