目录
一、java文件及文件结构
二、命名空间
三、输入与输出语句
1.输出
2.输入
四、数据类型
五、运算符
六、常量
七、数组
八、类
九、抽象类
十、接口
十一、内存回收机制
一、java文件及文件结构
- 源文件后缀名是java
- 文件的名字必须和类名保持一致,一般一个文件只有一个类
- main方法必须用 public static 修饰,必须带形式参数String[]类型,必须写在某个类中。
- 在Eclipse中新建java项目的步骤:在Eclipse中新建项目
- 在Eclipse中新建类的步骤:在Eclipse中新建类
二、命名空间
1. java使用“包”划分命名空间,包可以理解为一个文件夹,一个包中可以有很多java源文件。
在不同的包中可以有相同的类名。比如java中有两个Date类,一个属于java.util包,一个属于java.sql包。
2. 在Eclipse新建包的步骤:在Eclipse中新建包
3. 包的关键字是package,每个java文件的第一句应该是包声明。
4. 导入其他包中的类,使用关键字import,格式为import 包名.类名;
(1) 导入工具包中的日期类:
(2) * 代表所有,例如导入工具包中的所有类
5. java默认会导入语言包,也就是java.lang,不需要手动导入。
三、输入与输出语句
1.输出
System.out.print(“Hello world”);//输出后不换行
System.out.println(“Hello world”);//输出后换行
//按照某种格式输出,和c的printf作用相同
System.out.printf(“%d”,10);
2.输入
需要用到Scanner类
四、数据类型
- java的基本数据类型比cpp少,分别是byte、short、int、long、float、double、char、String
- 没有unsigned系列
- java有byte类型,字节型,存储一个字节
- 没有long double类型
- char类型占2字节,好处是英文字符和中文字符都可以存储
- 布尔型cpp中是bool,java中是boolean
- String表示字符串类型,属于java.lang包,所以不需要手动导入,注意首字母是大写的
五、运算符
- java不支持运算符重载
- java通过instanceof判断某个对象是否属于某个类
六、常量
在变量前面加final关键字,表示最终变量,也就是常量。
例如final double PI = 3.14;
七、数组
声明数组的方式不同,java必须通过new运算符,长度指定在右边表达式
类型[] 数组名 = new 类型[长度];
类型[][] 数组名=new 类型[长度][长度];
例如:
int[] arr= new int[5]; //一维
int[][] arr2 = new int[6][8]; //二维
每个数组默认都有length属性,可以通过这个属性获得数组的长度,这意味着可以编写:
int[] arr = new int[5];
for(int i=0;i<arr.length;i++)
{
System.out.println(arr[0]);
}
没有给数组赋值时,int类型的数组中,元素默认是0,所以上述程序会输出5个0。
八、类
- 声明类的方式:
public class Student {
private String pwd = "1234"; //java支持声明成员变量的时候赋初值
public int id = 1;
protected int age = 20;
String name = "yg"; //没有写访问权限表示当前包中的类都可以访问到这个变量
/*
* 无参构造方法,没有写任何构造方法的时候,系统默认会生成
* 但是如果写了有参的构造方法,系统就不会自动生成了
*/
public Student() {
/*
* super表示调用父类无参构造方法,如果不写的话,系统也会默认调用。
* 如果写了必须是第一条语句
*/
super();
}
//有参构造方法
public Student(String pwd, int id, int age, String name) {
super();
//java可以用this.调用成员变量或方法,用于区分同名的成员变量和局部变量
this.pwd = pwd; //将形式参数pwd中的值传递给成员变量pwd
this.id = id;
this.age = age;
this.name = name;
}
void speak()
{
System.out.println("我叫"+name);
}
}
- 访问权限有4种:
每个成员变量前都必须写访问权限,如果不写,则表示当前包的类都可以访问。
例如:
private int pwd;
public int id;
protected int age;
String name;
2. 创建对象,使用new关键字调用构造方法,有参的或者无参的都行。
package com.yg;
public class Test {
public static void main(String[] args) {
/*
* stu是Student类型的引用变量,java没有指针。
* stu 保存new出来的对象的地址。
*/
Student stu = new Student();
stu.speak(); //使用点运算符调用成员
}
}
3. 继承
(1) 不是用“:”,而是用extends关键字
public class Student extends People
{
}
(2) java没有多种继承方式
(3) java所有类默认继承了Object类,Object类是顶级父类。
(4) java的构造方法后面不能有“:”去继承别的构造方法。但是在方法体内使用this()调用本类的其他构造方法,或者使用super()调用父类构造方法。
(5) java所有的方法默认都是可以被子类重写的,不需要额外的关键字。
若方法前面被final修饰了,则表示该方法不可以被重写。
若class前面被final修饰了,则表示该类不可以被继承。
(6) java的类只支持单继承,不支持多继承。
九、抽象类
只有方法的声明,没有实现部分。在java中叫做抽象方法,与cpp中的纯虚函数对应。
java的抽象类
十、接口
java中的类不支持多继承,java使用接口来实现多继承。
c++中类的多继承容易产生歧义,java的多继承只继承约定,避免了二义性。
java中的接口
十一、内存回收机制
java有自动的内存回收机制,java虚拟机有内存回收算法,程序员无须编写析构方法,无须手动释放对象。