黑马程序员_java中的小知识
来源:互联网 发布:java web classpath 编辑:程序博客网 时间:2024/05/17 22:24
eclipse及IDE开发工具介绍:
IDE开发工具都支持使用工程化方式 管理一个项目的程序开发过程。一般来说一个相对独立的项目就是一个工程。一个项目中涉及多个Java文件,资源文件等用一个工程进行管理。 一个workspace 可以包含多个 project ,一个workspace 保留了 Eclipse 的一套环境选项的配置。如果要为Eclipse再配置一套环境选项,可以再创建一个workspace。
所以:eclipse 工作台中的所有工程继承工作台的配置,其中某个工程也可以覆盖工作台的配置,Java面向对象的思想。
1、在Eclipse 中如何设置快捷键:
Windows->Preferences->General -> Editors ->Key (Content Assist:内容助理) 这样的设置对一个工作台中的所有项目应用。
注意:设置快捷键时,要解除原来的绑定关系。
2、设置代码模版:如输入syso,则可以自动补全System.out.println();
Windows->Preferences->General -> Editors ->Templates
3、在MyEclipse如何调试:
右键->Debug as 便会跳到调试透视图。观看一个变量的值:右键->watch
关于透视图:很多小窗口的集合。Eclipse 将很多功能小窗口集合成一个透视图,作用于相应的功能。
4、配置Eclipse 中的编译和运行环境:
Windows->Preferences->java ->Complier 配置Java程序编译版本
静态导入与编译器语法设置
package com.itcast.day1; import static java.lang.Math.*;//导入全部 import static java.lang.Math.max;//导入一个 public class StaticImport { public static void main(String[] args) { //sop(random()); } public static void sop(Object obj){ System.out.println(obj); } }
实现带有构造方法的枚举,当枚举只有一个成员时,就可以作为一种单例的实现模式
public class EnumTest { public static void main(String[] args) { WeekDay mon = WeekDay.MON; System.out.println(mon);//名称为MON System.out.println(mon.name());//名称为MON System.out.println(WeekDay.valueOf("YYY"));//增加枚举,将"YYY"变为枚举类型 System.out.println(WeekDay.values().length);//返回枚举值 } public enum WeekDay{ //成员列表必须写在所有成员之前 SUN,MON,TUE,WED,THI,FRI,SAT;//MON和MON(1)就是表示在构造 private WeekDay(){} private WeekDay(int day){} } public enum TrafficLamp{ RED(30){ public TrafficLamp nextLamp() { return GREEN; } },GREEN(45){ public TrafficLamp nextLamp() { return YELLOW; } },YELLOW(5){ public TrafficLamp nextLamp() { return RED; } }; public abstract TrafficLamp nextLamp(); private int time; private TrafficLamp(int time){ this.time = time; } } }
基本数据类型的自动拆箱和装箱以及FlyWeight设计模式
public class AutoBox { public static void main(String[] args) {// 在1.5以前:一下操作是不行的。 Integer iObj = 3 ;// 在1.5以后,自动装箱:将基本数据类型int,自动封装给一个Integer对象// 类似于:Integer iObj = new Integer(3) ; System.out.println(iObj + 10); /* 自动拆箱:如上操作相当于: iObj = new Integer(iObj.intValue() + 10) */ Integer i1 = 13 ; Integer i2 = 13 ; System.out.println(i1==12); /* 享元设计模式:flyweight 有很多个小对象,他们有很多相同的属性,那么将它们封装成一对象,相同的属性称为 内部属性;不同的属性作为方法的参数。 */ }}
泛型
public class GenericTest { public static void main(String[] args) throws IllegalArgumentException, SecurityException, IllegalAccessException, InvocationTargetException, NoSuchMethodException { List<Integer> arr = new ArrayList<Integer>() ; //通过反射来验证:泛型只是在编译阶段帮助编写程序时避免存储集合时类型出错。 arr.getClass().getMethod("add", Object.class).invoke(arr, "abc") ; System.out.println(arr.get(0)); } }
反射
反射不是jdk1.5的新特性。反射就是把Java 类中的各种成分映射成相应的Java类。例如。一个Java类中用一个Class类的对象来表示一个类中的组成部分:成员变量,方法,构造方法,包等信息也
用一个个Java类来表示,就像汽车是一个类,汽车中的发动机,变速箱等等也是一个个的类。表示Java类的Class类显然要提供一系列的方法,来获得其中的变量,方法,构造方法,修饰符,包等信息。
这写信息就是用相应的实例对象来表示,它们是Field、Method、Contructor、Package等。
1、反射的基石->Class 类。
注意:class 表示类,而Class则是一个类名。Java程序中的各个Java类属于同一类事物,描述这类事物的Java类名就是Class。
Class类描述了哪些方面的信息呢?类的名字,类的访问属性,类所属于的包名,字段名称的列表,方法名称的列表,等等。
问:如Person 类代表人,那么它的实例对象就是张三,李四这样一个个具体的人,Class类代表Java类,他的各个实例对象又分别对应什么呢?
Class的各个实例对应在内存中的字节码,例如Person 类的字节码,ArrayList 类的字节码等等。一个类被加载器加载到内存中,占用一片存储弓箭,这个空间里面的内容就是类的字节码,不同的类的字节码是不同的,所以它们在内存中的内容是不同的,这一个个的空间可分别用一个个的对象来表示,这些对象显然具有相同的类型
问:如果得到各个字节码对应的实例对象:
类名.class , 例如System.class
对象.getClass() , 例如 new Data().getClass() ;
Class.forName("类名")
九个预定义Class对象:boolean
、byte
、char
、short
、int
、long
、float
和 double
和关键字 void
也表示为 Class
对象。
> public boolean isPrimitive()
:判定指定的 Class
对象是否表示一个基本类型。有九种预定义的 Class
对象,表示八个基本类型和 void。这些类对象由 Java 虚拟机创建,与其表示的基本类型同名,即 boolean
、byte
、char
、short
、int
、long
、float
和 double
。
> Int.Class == Integer.TYPE
数组与Object的关系及其反射类型
import java.lang.reflect.*; public class ReflectTest { public static void main(String[] args) throws Exception{ int[] a1 = new int[3]; int[] a2 = new int[4]; int[][] a3 = new int[2][3]; String[] a4 = new String[3]; System.out.println(a1.getClass()==a2.getClass()); System.out.println(a1.getClass().getName()); System.out.println(a1.getClass().getSuperclass().getName()); System.out.println(a2.getClass().getSuperclass().getName()); System.out.println(a3.getClass().getSuperclass().getName()); System.out.println(a4.getClass().getSuperclass().getName()); System.out.println(String.class.getSuperclass().getName()); System.out.println(StringBuffer.class.getSuperclass().getName()); //发现a1,a2,a3,a4的super都是objcet所以可以 Object aObj1 = a1; Object aObj2 = a4; //Object[] aObj3 = a1;不对 int 不可以直接转为object Object[] aObj4 = a3; Object[] aObj5 = a4; } }成员方法的反射
public class ReflectMethod { public static void main(String[] args) throws Exception { Method charAt = String.class.getMethod("charAt", int.class) ; // 反射方法:方法对象调用对象的方法。 System.out.println(charAt.invoke("abcd", 1)) ; }
}
- 黑马程序员_java中的小知识
- 黑马程序员_java学习日记_Java基础小知识学习整理
- 黑马程序员_Java中的反射
- 黑马程序员_Java中的集合
- 黑马程序员_Java中的IO
- 黑马程序员_java中的IO
- 黑马程序员_java中的堆栈
- 黑马程序员_java中的异常
- 黑马程序员_Java中的反射
- 黑马程序员_Java中的数组
- 黑马程序员_java中的字符串
- 黑马程序员_java中的异常
- 黑马程序员_java中的线程
- 黑马程序员_java中的集合
- 黑马程序员_java中的多线程
- 黑马程序员_java中的同步
- 黑马程序员_java中的IO
- 黑马程序员_java中的多线程
- hdu水题
- 页面生命周期
- 10071 - Back to High School Physics
- 以人名命名 “兰考焦裕禄通用航空机场”有望动工
- Ubuntu 中运行Windows软件,Wine的安装与使用
- 黑马程序员_java中的小知识
- [连载]C#程序设计(08)--- C#核心编程-6 --- 方法
- springMVC 重定向带参数
- 背包问题
- C-枚举(11)
- HDU 1839 Delay Constrained Maximum Capacity Path 最短路+二分
- 编译c++代码,生成mex
- 判断两个数是否互素
- 配置NDK路径设置