写在前面:最近安排了后面有维护公司IOT Android sdk的任务,因为一直做嵌入式软件方面的开发,第一次搞android,所以想从最基本的开始,一点一点的去深入android里面,虽然刚开始的东西比较简单,但还是想记录一下学习和成长的历程。下面就开始Java语言的学习吧。
正文:
一、HelloWorld
1、所有的java应用程序都是从主类main开始执行,public static void main(String args[]),这个类称之为应用程序的主类,args[]是main的一个参数,字符串类型的数组。
2、命名规范:
源文件名字与类的名字相同,扩展名为.java。命名规范:
(1)、包的命名:全部小写(com.blue)
(2)、类的命名:单词首字母大写(Hello)
(3)、方法的命名:首字母小写,后面单词首字母大写(getName)
(4)、常量命名:全部大写,常加入下划线(MAX_VALUE)。
javac是编译器,java是解析器
3、特点:简单(不再有指针的概念)、面向对象、多线程、安全、动态
二、标识符和关键字
Java关于标识符的语法规则:
1、标识符由字母、下划线、美元符号和数字组成,长度不受限
2、标识符的第一个字符不能是数字字符
3、标识符不能是关键字
4、标识符不能是true、false和null
Java中有51个关键字和保留了const 、goto这两个总共53个
三、基本数据类型
1、Java一共有8种基本数据类型:boolean、byte、short、int、long、float、double、char
这8种基本数据类型可以分为逻辑类型:boolean
常量:true、false
整数类型:byte、short、int、long
int:4个字节
byte:1个字节
short:2个字节
long:8个字节,long类型常量用后缀L表示,例如:long width = 12L,height = 2005L
字符类型:char
常量 'A' 'b'.....
char类型2个字节
要得到一个字符在Unicode表中的位置,用int类型显示转换,例如(int)'a',或者int p ='a';
要得到0~65536之间的数所代表的Unicode表中相应位置上的字符必须使用char类型显示转换。
浮点类型:float、double
float类型:常量后面必须有后缀"f"或者"F"
float x = 22,76f,weight = 1e-12F
精度:float类型保存8位有效数字,4个字节
double类型: 后缀 "d"或"D",可以省略
double x=23.345d,y=1e12
double类型内存分配8个字节,保留16位有效数字
2、数据类型转换
Java中数据的基本类型(不包括逻辑类型)按精度从低到高:
byte short char int long float double
当把精度低的赋值给精度高的(从左到右)变量时,系统自动完成转换:例如:float x = 100;
当把精度高的赋值给精度低的(从右到左)变量时,必须显示加强制类型转换,例如: int x=(int)3.14;
把一个int类型的常量赋值给一个byte或者一个short类型变量时,如果超出byte或者short的范围必须加强制类型转换,例如
byte a = (byte)128;
3、输入数据
Scanner是JDK1.5新增的一个类,可以使用Scanner类创建一个对象:
Scanner reader = new Scanner(System.in);
reader对象调用下列方法,读取用户在命令行输入的各种基本类型:
nextBoolen()、nextBye()、nextShort()、nextInt()、nextLong()、nextFloat()、nextDouble()
这些方法在执行是都会阻塞。
4、输出数据
System.out.println()和System.out.print()都可输出数据,区别是前者换行、后者不换行。
JDK1.5新增了和C语言printf函数类似的数据输出方法。
四、变量和常量
JAVA编码规范中,要求常量名大写,只需要在变量的语法格式前面加关键字final即可。
final double PI = 3.14; final char MALE = 'M';
五、运算符和表达式
算术运算符:
1、加减:+ -
2、乘除求余:
3、自增、自减
关系运算符:> < >= <= == !=
逻辑运算符:&& || !
位运算符: & | ~ ^
instanceof : 左面的操作元是一个对象,右边是一个类,当左面的对象是右面的类或子类创建的对象时,该运算符的结果为true,否则为false。
六、数组
1、声明数组:一维数组有两种格式,
数组类型 数组名[];
数组类型 [] 数组名;
例如: float boy[];
float[] boy;
二维数组有两种格式,
数组类型 数组名[][];
数组类型 [][] 数组名;
例如: char cat[][];
char [][]cat;
2、分配变量:声明数组后,还必须为它分配内存空间,为一维数组分配内存空间的格式如下:
数组名字 = new 数组元素的类型[数组元素个数];
例如: float boy[];
boy = new float[4];
声明数组和创建数组可以一起完成: float boy = new float [4];
为二维数组分配内存空间格式如下:
int mytwo[][];
mytwo = new int[3][4];
声明数组和创建数组也可以一起完成:
int mytwo[][] = new int[3][4];
3、length的使用
数组元素的个数就是数组的长度。
对于一维数组,"数组名.length"就是数组中元素的个数。
对于二维数组,"数组名.length"表示它含有的一维数组的个数。
例如:float a[] = new float[12];
int b[][] = new int[3][6];
a.length 的值是12;而b.length的值是3
4、数组的初始化
数组创建后,系统会给数组的每个元素一个默认值,如,float型是0.0
在声明数组的同时也可以给数组的元素一个初始值,如:float boy[] = {21.3f,33.4f,1234.5};
也可以直接使用若干个一维数组初始化一个二维数组,这些一维数组的长度不尽相同,例如:
int a[][]={ {1},{1,2},{1,2,3},{1,2,3,4} }; 这个数组等同于int a[][] = { {1,0,0,0},{1,2,0,0},{1,2,3,0},{1,2,3,4}};
5、数组的遍历
格式:
for(声明循环变量:数组的名字){
... ...
}
其中,声明的循环变量的类型必须和数组的类型相同。
下面一个数组的小练习:
public class Demo10{
public static void main(String args[])
{
int arry[];
arry = new int[4];
System.out.println("数组元素个数:"+arry.length);
for(int i =0; i < arry.length;i ++)
{
arry[i] = i;
}
for(int i = 0;i < arry.length;i ++)
{
System.out.println("arry["+i+"]:" +arry[i]);
}
for(int i:arry)
{
System.out.println(i);
}
}
}
七、枚举
1、enum { 常量列表 } 例如:
enum Season
{spring, summer, autumn,winter}
Season x;
x= Season.spring;
2、枚举类型的名字.values(); 会返回一个一维数组,该一维数组元素的值和枚举类型中常量依次相对应。例如:
Season a[] = Season.values();则a[0]到a[3]依次是spring、summer、autumn、winter
下面是枚举的练习:
public class Demo11{
public static void main(String args[])
{
Weekday wkd = Weekday.Sunday;
System.out.println(wkd);
//遍历数组
for(Weekday w:Weekday.values())
{
System.out.println(w);
}
Weekday days[] = Weekday.values();
for(int i = 0;i < days.length;i ++)
{
System.out.println(days[i]);
}
}
public enum Weekday{
Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday
}
}