【黑马程序员】张老师高新知识学习(1)

------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ---------

1。javac是编译器,java是运行环境。java版本高于javac版本可以正常运行,反之不行。

2。eclipse开发环境下,分为workspace-项目-包的结构,上层结构的配置改变会影响下层。

3.常用操作:alt+/自动补全; ctrl+/注释鼠标选择区域;ctrl+Shift+T打开类型;ctrl+1快速修正

   自定义模板:windows-首选项-java-editor

4.静态导入。如 import static java.lang.Math;      

                       int a,b;   b=cos(a);    用静态导入可以省去原来的Math.

5.可变参数。可变参数必须是参数列表中最后一个  function(String str,double d,int...is){

            函数体中通过is[]数组来读取 }

6.for-each循环。int[]a;   

for(int b:a){  对b操作 }   等价于  for(int i=0;i<a.length;i++){int b=a[i]; 对b操作 }

7.自动装箱 Integer i=9  等价于 Integer i=new Integer(9)

8.枚举:定义枚举。任何函数都必须位于枚举元素之后。元素之间逗号,所有元素之后分号。构造函数必须为private
枚举元素后面括号中写入构造函数的参数。创建枚举对象的时候会创建每一个元素,并调用每个元素对应的构造函数。
9。用普通类模拟枚举
class WeekDay{
private WeekDay(){}
public final static WeekDay Monday=new WeekDay(); 
                ......}
   用抽象类模拟枚举
    
<span style="font-family:Microsoft YaHei;font-size:14px;"> abstract class WeekDay{
    	public final static WeekDay Monday=new WeekDay() {
		public WeekDay nextDay() {
			return Sunday;  } };
    	public final static WeekDay Sunday=new WeekDay(){
		public WeekDay nextDay() {
    			return Monday;  } };
    	public abstract WeekDay nextDay();
     }</span>


用抽象方法定义nextDay就将大量if-ele转换成了一个个独立的类

10.Class类是所有java类的类型,Class类的实例就是对应类的字节码。就比如同一个类的实例对象之间是代码相同而变量不同;

 Person.class就是Person类的字节码要获得Class类:

(1)静态变量:Person.class

(2)实例对象的Getclass()方法
 (3)Class.forName("java.lang.Math") forName的功能就是加载Math类的字节码。

反射:反射就是把Java类中的各种成分映射成相应的java类

(3)Class.forName("java.lang.Math") forName的功能就是加载Math类的字节码。
反射:反射就是把Java类中的各种成分映射成相应的java类。
为什么要用反射去调用?
可以通过改变输入的字符串去控制程序运行,而不用改变代码。
(4)反射调用含有数组参数的函数:
   method.invoke(...,new Object[]{new string[]{...}});
或method.invoke(...,(Object)new String[]{...});
(5)数组的字节码,维数相同类型相同class就相同 
(6)数组反射:可以得到数组中某个具体元素的类型,能得到原数组是什么类型的数组。

如int[]a=new int[3];
Object[] a=new Object[]{"a",1}
a[0].getClass().getName()得到具体元素的类型
11.反射的作用:实现框架功能
(1)在写框架时,不知道要被调用的类名。在程序中无法直接new出对象,只有用反射来做。
(2)框架调用用户程序,用户程序调用工具程序,这就是框架与工具的区别。
(3)用配置文件加反射来调用hasHset和arrayList

<span style="font-family:Microsoft YaHei;font-size:14px;">Collection collection=null;	    
InputStream is=new FileInputStream("F:/android/my_workspace/exam/src/com/itheima/config.properties");
Properties props=new Properties();
props.load(is);
is.close();
String className=props.getProperty("className");
collection=(Collection) Class.forName(className).newInstance();</span>


------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ---------

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值