01 Java语法

. 概念

JDK: Java Development Kit

JRE: Java Runtime Environment

开发程序时安装JDK即可,会自动安装JRE,用户的运行环境安装JRE即可。

JDK安装目录种有javac程序,它是java编译器。

安装完毕后配置JAVA_HOMECLASSPATH的环境变量。

 

. 命令行下编译运行

一个文件中只能有一个类,且文件名和类名必须一样。

编译:C:\Users\Hang\Downloads>javac Hello.java

运行:C:\Users\Hang\Downloads>java Hello

 

. Eclipse导出jar

右键工程中已有的packageFile - Export - Java - JAR file - finish,导出后的.jar文件可以用解压缩软件打开

 

 

 

右键工程 - New - Package,输入名字,如果是个人输入org,公司输入则com,其后接功能名。把java源文件拖进去,旧文件如果依然存在可将其删除。此时再次导出jar,用解压软件打开后可以观察到目录结构。

 

 

 

 

 

 

以上导出的jar相当于库文件,在命令行运行,提示找不到或无法加载主类 MyHello.jar

 

 

 

下面导出可运行的jar文件,右键工程中已有的packageFile - Export - Java - Runable JAR file - finish

 

 

 

可运行的jar文件中的清单文件指明了更多信息

 

 

 

. 语法

1. 值类型(都是有符号类型,不存在无符号类型)

byte 1字节

char 2字节,表示Unicode字符

long 8字节

boolean 取值为truefalse

 

2. 引用类型

String

 

3. 常量

关键字final

如果在函数中,常量写为:

final int num = 1;

final String str = "Asdf";

实际上,常量往往写为 public static final NUMBER = 1;

 

4. 移位

由于都是有符号类型,故右移时最高位都补符号位,即算术右移。如果想补0,需要写3个小于符号,此时进行逻辑右移:a <<<= 1;

 

5. 异常处理

try {

 

}

catch (Exception e) {

// TODO: handle exception

}

finally {

 

}

  

 

6. throws

public static void foo() throws Exception { //throws关键字说明方法可能抛出异常

 

}

  

 

调用foo()时需要有try catch,否则编译报错

try {

  foo();

}

catch (Exception e) {

  // TODO: handle exception

}

  

 

7. super

对父类的引用

 

8. synchronized

同步时使用,可用于静态方法、实例方法或代码块

public static synchronized void foo() {//静态方法中可用

 

}

 

public synchronized void foo2() {//实例方法中可用

 

}

 

synchronized (args) {//代码块中可用

 

}

  

 

9. instanceof

if (args instanceof Object) {

  Object theObj = (Object) args;

}

  

 

10. 数组

int[] ary1 = {1,2,3}; //一维数组

int[][] ary2 = {{1,2},{3,4}}; //二维数组

 

for (int[] ary : ary2) {

  for (int n : ary) {

    System.out.println(n);

  }

}

  

 

11. 包装类

由于java中的数据类型不是对象,没有方法和属性,所以要将其转化为对象,对应关系如下:

数据类型    包装类

byte            Byte

boolean     Boolean

short          Short

char           Character

int              Interger

long           Long

float           Float

double       Double

 

 

11. ArrayList

ArrayList<Integer> list = new ArrayList<Integer>();

list.add(1);

list.add(2);

list.add(3);

for (Integer integer : list) {

  System.out.println(integer);

}

  

 

12. LinkedList

LinkedList<Integer> list=new LinkedList<Integer>();

list.add(1);

list.add(2);

list.add(3);

for (Integer integer : list) {

  System.out.println(integer);

}

  

 

13. HashMap

HashMap<Integer, String> hashMap=new HashMap<Integer, String>();

hashMap.put(0, "Hello");

hashMap.put(1, "World");

for (Entry<Integer, String> entry : hashMap.entrySet()) {

  System.out.println(entry.getKey());

  System.out.println(entry.getValue());

}

  

 

14. 数字转字符串

String str = Integer.toString(10);

System.out.println(str);

  

 

15. 访问权限

如果未注明publicprivate,则访问权限默认为包作用域,即A调用B,如果两者在同一个包里则成功,否则编译报错。

 

16. 内部类

public class Hello {

private int num = 1;

 

public class Internal{

private int num = 1;

 

public void foo() {

  num = 111111; //Internal自己的num

    Hello.this.num = 222222; //Hello的num

  }

}

 

Internal internal2 = new Internal();

 

public static void main(String[] args) throws Exception {

  Hello hello = new Hello();

  Internal internal = hello.new Internal();

internal.foo();

 

System.out.println(hello.num); //输出222222

  System.out.println(internal.num); //输出111111

  }

}

  

 

 

 

17. 匿名类

主要是用于在我们需要的时候创建一个对象来执行特定的任务,可以使代码更加简洁。

 

public class Hello {	
	public void foo1(){
		System.out.println(111111);
	}
	public void foo2(){
		System.out.println(222222);
	}

	public static void main(String[] args) throws Exception {
		//匿名类继承一个父类,同理可实现一个接口
		Hello hello = new Hello() {
			@Override 
			public void foo1(){
				System.out.println("重写父类方法");
			}
		};
		
		hello.foo1();  //输出重写父类方法
		hello.foo2();  //输出222222
		
	}	
}

  

 

18. 非虚方法

staticprivatefinal修饰的方法都是非虚方法,其他都是虚方法。

 

posted @ 2021-01-26 15:32  八转达人  阅读(91)  评论(0编辑  收藏  举报