目录

一、java文件及文件结构

二、命名空间

三、输入与输出语句

1.输出

2.输入

四、数据类型

五、运算符

六、常量

七、数组

八、类

九、抽象类

十、接口

十一、内存回收机制


一、java文件及文件结构

  1. 源文件后缀名是java
  2. 文件的名字必须和类名保持一致,一般一个文件只有一个类
  3. main方法必须用 public static 修饰,必须带形式参数String[]类型,必须写在某个类中。
  4. 在Eclipse中新建java项目的步骤:在Eclipse中新建项目
  5. 在Eclipse中新建类的步骤:在Eclipse中新建类

 

二、命名空间

1. java使用“包”划分命名空间,包可以理解为一个文件夹,一个包中可以有很多java源文件。

  在不同的包中可以有相同的类名。比如java中有两个Date类,一个属于java.util包,一个属于java.sql包。

2. 在Eclipse新建包的步骤:在Eclipse中新建包

3. 包的关键字是package,每个java文件的第一句应该是包声明。

java和Cpp java和cpp范型的区别_java和Cpp

4. 导入其他包中的类,使用关键字import,格式为import 包名.类名;

(1) 导入工具包中的日期类:

java和Cpp java和cpp范型的区别_数组_02

(2) 代表所有,例如导入工具包中的所有类

java和Cpp java和cpp范型的区别_数组_03

 

5. java默认会导入语言包,也就是java.lang,不需要手动导入。

 

三、输入与输出语句

1.输出

System.out.print(“Hello world”);//输出后不换行

System.out.println(“Hello world”);//输出后换行

//按照某种格式输出,和c的printf作用相同

System.out.printf(“%d”,10);

2.输入

需要用到Scanner类

 

四、数据类型

  1. java的基本数据类型比cpp少,分别是byte、short、int、long、float、double、char、String
  2. 没有unsigned系列
  3. java有byte类型,字节型,存储一个字节
  4. 没有long double类型
  5. char类型占2字节,好处是英文字符和中文字符都可以存储
  6. 布尔型cpp中是bool,java中是boolean
  7. String表示字符串类型,属于java.lang包,所以不需要手动导入,注意首字母是大写的

 

五、运算符

  1. java不支持运算符重载
  2. 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。

 

八、类

  1. 声明类的方式:
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);
	}
}

 

  1. 访问权限有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虚拟机有内存回收算法,程序员无须编写析构方法,无须手动释放对象。