JavaSE总结——基于jdk1.8

零、Java环境搭建

jdk安装、环境变量设置、cmd窗口操作、javac命令、java命令、main方法

一、Java基本语法

1、常量与变量(常量不可位于赋值运算符左侧)

2、标识符命名规则:由字母、数字、下划线、美元符$组成,不能以数字开头

类名、接口名:必须大写字母开头,通常由单词或缩写组成

方法名:必须小写字母开头,通常由单词或缩写组成

常量名:必须全部大写,单词之间以下划线分割

变量名:不能由数字开头

3、数据类型

基本数据类型——四类8种

boolean:布尔型,占1个字节


char:字符型,占2个字节,可作整型计算


byte:整型,占1个字节

short:短整型,占2个字节

int:整型,占4个字节

long:长整型,占8个字节


float:浮点型,占4个字节

double:双精度浮点型,占8个字节

其他数据类型——

String:字符串类型,大小不可变

Type[]:数组类型,大小不可变,通过下标访问

Type[][]:二维数组

3、运算符

(1)算术运算符

+、-、*、/、%、++、--

(2)赋值运算符

=、+=、-=、*=、/=、%=

(3)比较运算符

==、!=、>、<、>=、<=

(4)逻辑运算符

&(与)、|(或)、!(非)、^(异或)、&&(短路与)、||(短路或)

(5)三目运算符

条件表达式?表达式1:表达式2

4、流程控制:if-else、for循环、while循环、switch-case

	public static void main(String[] args) {
		int[] arr = {1,2,3,4,5};
		for (int min = 0, max = arr.length - 1; min < max; min++, max--) {
			int temp = arr[min];
			arr[min] = arr[max];
			arr[max] = temp;
		}
	}

 5、方法的定义与使用

	/**
	 * 打印n*n乘法表
	 */
	public void PrintTable(int n) {
		for (int i = 1; i <= n; i++) {
			for (int j = 1; j <= i; j++) {
				System.out.print(j + "*" + i + "=" + j * i + "\t");
			}
			System.out.println();
		}
	}

6、类的定义与使用

7、集合定义与使用

(1)ArrayList

(2)HashMap

二、关键技术点

动态代理:

JDK提供了Proxy类静态方法和InvocationHandler函数式接口来生成动态对象。

public static Object newProxyInstance(ClassLoader loader,Class<?>[] interfaces,InvocationHandler h)

第一个参数,类加载器

第二个参数,接口Class对象数组

第三个参数,InvocationHandler接口对象

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

/**
 * 代理对象要实现的目标接口
 * @author Administrator
 *
 */
interface Human {
	void speak();

	void write();
}

/**
 * 实现了目标接口的普通类
 * @author Administrator
 *
 */
class Chinese implements Human {

	@Override
	public void speak() {
		System.out.println("说汉语。。。");
	}

	@Override
	public void write() {
		System.out.println("写中文。。。");
	}

}

/**
 * 程序主类
 * @author Administrator
 *
 */
public class Main {

	/**
	 * 程序入口
	 * @param args
	 * @throws Exception
	 */
	public static void main(String[] args) throws Exception {

		/*
		 * Proxy.newProxyInstance方法入参:
		 * 类加载器
		 * Class对象数组(代理对象要实现的接口Class对象)
		 * InvocationHandler接口对象
		 */
		Human proxy = (Human) Proxy.newProxyInstance(
				// 类加载器,在同级目录下的类都可以
				Main.class.getClassLoader(), 
				// 创建Class对象数组
				new Class[] { Human.class },
				// 创建InvocationHandler接口对象(此处用匿名内部类直接实现invoke方法)
				new InvocationHandler() {
					@Override
					public Object invoke(Object proxy, Method method, Object[] args) 
							throws Throwable {
						String methodName = method.getName();
						if ("speak".equals(methodName)) {
							System.out.println("说人类语言。。。");
						}
						if ("write".equals(methodName)) {
							System.out.println("写人类文字。。。");
						}
						return null;
					}
				});
		// 代理对象调用方法,执行时将被替换为invoke方法
		proxy.speak();
		// 代理对象调用方法,执行时将被替换为invoke方法
		proxy.write();

	}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值