黑马程序员_Java基础加强

这篇博客主要探讨了Java的基础知识,并对比分析了eclipse与Myeclipse两款开发工具的使用体验和特点,适合初学者和进阶者提升技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

eclipse与Myeclipse

Myeclipse的核心就是eclipse,只不过Myeclipse在此基础上增加了许多的插件,使用起来更加的方便。
IDE:集成开发环境。IDE工具都支持使用工程方式管理一个项目的程序开发过程,一般来说一个相对独立的项目就是一个工程。
workspace:工作空间。
jdk1.5的特性:
import语句可以导入一个类或某个包中的所有类。这个语句并不会增加程序使用资源,只会让我们少写代码。
import语句:导入某个类的一个静态方法,或者是某个类下的所有静态方法。(jdk1.5以上版本支持)
可变参数的特点:
1、只能出现在参数列表的最后。
2、...位于变量类型和变量名之间,前后有无空格都可以。
3、调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。
示例:
public class VariableParmeter {
	public static void main(String[] args)
	{
		System.out.println(add(2, 3));
		System.out.println(add(2, 3,5));
		System.out.println(add(2, 3,23));
		System.out.println(add(2, 3,1,4,5));

	}
	public static int add(int x, int...intarray)
	{
		int sum = 0;
		for(int i=0; i<intarray.length; i++ )   //可变参数作为数组使用。
			sum = sum + intarray[i];
			
		return sum+x;		
	}

}
增强的for循环:
for(type 变量名:集合变量名){}
自动装箱和自动拆箱,享元模式:
Integer iObj = 3; //自动装箱
iObj + 12;  	//自动拆箱
枚举:
枚举就是一个类,枚举中的成员就是这个类的静态成员。
	//正常的枚举,其中有两个构造方法,七个成员默认会调用第一个构造方法输出first
	//而如果成员带一个int参数的话会调用第二个方法,输出second
	public enum WeekDay
	{
		SUN,MON,TUE,WED,THI,FRI,SAT;
		private WeekDay()
		{
			System.out.println("first");
		}
		private WeekDay(int day)
		{
			System.out.println("second");
		}
	}
	//有抽象方法的枚举
	public enum TrafficLamp
	{
		//调用父类的有参数的构造方法
		RED(30) {
			@Override
			public TrafficLamp nextLamp() {
				
				return GREEN;
			}
		},GREEN(45) {
			@Override
			public TrafficLamp nextLamp() {
				
				return YELLOW;
			}
		},YELLOW(5) {
			@Override
			public TrafficLamp nextLamp() {
				
				return RED;
			}
		};
		public abstract TrafficLamp nextLamp();
		private int time;
		private TrafficLamp(int time)
		{
			this time = time;
		}
	}
反射:不是1.5的新特性,是从1.2的时候就出现了的特性。Class类C是大写的
反射就是把java类中的各种成分映射成相应的java类。
Class:代表一类什么样的事物。java中的类用语描述一类事物的共性。至于这些共性的值则是由这个类的实例对象来确定。
用于描述java中各个类的共同属性的类就是Class类。
String str1 = "abc";
Class cls1 = str1.getClass(); //获得str1的字节码。
Constructor类:提供关于类的单个构造方法的信息以及对它的访问权限。
Constructor con1 = String.class.getConstructor(StringBuffer.class) ;//获得String类的带StringBuffer参数的构造方法。
String str2 = con1.newInstance(new StringBuffer("abc"));	//用获得的构造方法构造一个str2对象
Field类:提供有关类或接口的单个字段的信息,以及对它的动态访问权限。反射的字段可能是一个类(静态)字段或实例字段。


ReflectPoint pt1 = new ReflectPoint(3,5);
//获取类中的成员y。注意:fieldY不是对象本身上的变量y,而是代表类中的成员y
Field fieldY = pt1.getClass().getField("y");
//需要获得对象的y变量时使用fieldY.get(pt1)>
System.out.println(fieldY.get(pt1));</span>

Method类:代表某个类中的一个成员方法。

Method methodCharAt = String.class.getMethod("charAt", int.class); //通过String类的字节码获取带一个int参数的类方法charAt。

hashcode方法和HashSet类:

HashSet类对象中的成员对象通常都需要实现hashcode方法和equals方法,hash算法根据HashSet集合中的元素使用hashcode算出每个元素的hash值,并对其分组存放,当加入新元素时判断元素的hash值,根据hash值在集合中指定的分组中用euqals对比。这样在集合很大的时候可以大大的增加效率。

JavaBean:是一种特殊的java类,主要用于传递数据信息,这种java类中的方法主要用于访问私有的字段,且方法名符合某种命名规则。

java中的注解:也叫注释,也叫元数据。一种代码级别的说明。

Annotation(注解)是JDK5.0及以后版本引入的。它可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。注解是以‘@注解名’在代码中存在的,根据注解参数的个数,我们可以将注解分为:标记注解、单值注解、完整注解三类。它们都不会直接影响到程序的语义,只是作为注解(标识)存在,我们可以通过反射机制编程实现对这些元数据(用来描述数据的数据)的访问。

泛型:是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 java引入泛型的好处是安全简单

泛型是提供给javac编译器使用的,用于限制集合中使用的数据类型。但是程序员在编写程序的时候可以使用反射的方法躲过编译器的限制在集合中使用其他的数据类型,如:

//collection3是一个使用了泛型并限制为Integer类了的集合,但是通过使用反射将String对象加入集合。

collection3.getClass().getMethod("add",Object.class).invoke(collection3, “abc”);

类加载器:

类加载器负责加载 Java 类的字节代码到 Java 虚拟机中。

类加载器本身也是java类,正因为如此其他类加载器本身也需要类加载器加载,所以必须有一个根:BootStrap.

java虚拟机提供了如下三个类:父子关系及管辖范围如下图


类加载器的委托机制:当java虚拟机要加载一个类时,首先由当前线程的类加载器去加载线程中的第一个类,如果类A中引用了类B,java将使用加载类A的类装载器来加载类B;还可以直接调用ClassLoader.loadClass()方法来指定某个类加载器去加载某个类。

每个类加载器加载时又先委托给其上级类加载器,如果一直到根加载器都没有加载到类,则再依次按倒序直到返回给发起者加载,如果还加载不到就会抛异常

java中的代理: 简单的说就是为其他对象提供一种代理以控制对这个对象的访问。

通常是在要为已存在的多个具有相同接口的目标类的各个方法增加一些功能时,编写一个与目标类相同接口的代理类,代理类的每个方法调用目标类的相同方法,并在调用时加上系统功能的代码。

动态代理技术:jvm在运行期间动态生成出类的字节码,这种动态生成的类往往被用做代理类,即动态代理类。动态代理类必须实现一个或多个接口,所以动态类只能用在具有相同接口的目标类的代理如果需要为一个没有实现接口的类生成动态代理类那么必须使用CGLIB库(不是java标准库,是一个第三方的库)动态的生成一个类的子类用作该类的代理。


---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值