黑马程序员——JAVA基础加强(1)

------- android培训java培训、期待与您交流! ----------


Eclipse的使用技巧

eclipse与myeclipse的关系(都属于java开发的工具):

后者是前者的一个插件,后来为了方便使用,myeclipse集合了eclipse,后者是收费的。
可大部分人都是用eclipse 等常用的免费软件。最好用的因为别人都在用。这就是市场。

 

eclipse是java的一种IDE开发工具。


工程

我的看法是,一个独立的项目就是一个工程,一个工程包含多个源文件,运行环境,需要的资源。



 工作间(workspace):

一个工作间包含多个工程,工作间与工作间之间可以独立配置信息


  (编译、运行的版本、快捷键之类的)必须注意:不同的jre对应的效果可能不一样,例如java5新特性你用之前的版本,就会报错!


       

 
    快捷键使用技巧(经常出现软件之间快捷键冲突):
快捷键的位置:window->preferences->General->keys,设置alt+/键进行内容提示时,要注意解除alt+/键原来的绑定关系,直接输入alt+/就可以找到它的绑定关系,删除绑定关系时也可以使用removebinding这个按钮,课后必须教会大家在eclipse中。



2、静态导入(1.5特性,好处是不用写类名)

import语句可以导入一个类或某个包中的所有类
import static
语句导入一个类中的某个静态方法或所有静态方法
语法举例:
import static java.lang.Math.sin;
import static java.lang.Math.*; 

 

例子:
原来的:
package reviewDemo76;
 
public class Demo12 {
    public static void main(String[] args) {
        System.out.println(Math.max(12,15));
    }
}
 
使用静态导入的:
package reviewDemo76;
import static java.lang.Math.*;
 
public class Demo12 {
    public static void main(String[] args) {
        System.out.println(max(12, 15));
    }
}


 

 3、可变参数

 

是为了解决一个简单的方法在参数不同时多个重载的问题,用带可变参数的一个函数就能解决。
可变参数的特点:
1)只能出现在参数列表的最后;
2)  ... 位于变量类型和变量名之间,前后有无空格都可以;
3)调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组      的形式访问可变参数。
Public int add(int  x, int... args){//也可以直接(int..args)就是说传不传都可以
Int sum = x;
For(int i = 0; i<=args.lengrth;i++){
Sum+=args[i];
}
return sum;
}



 基本数据类型的自动拆箱与装箱

——>  -128~127之间的特殊性。为什么要这样设计,好处?
——>  享元模式(Flyweight Pattern):享元模式的特点是,复用我们内存中已存在的对象,降低系统创建对象实例。

自动装箱:
Integer num1 = 12;

自动拆箱:
System.out.println(num1 + 12);
基本数据类型的对象缓存:
Integer num1 = 12;
Integer num2 = 12;
System.out.println(num1 == num2);
 
Integer num3 = 129;
Integer num4 = 129;
System.out.println(num3 == num4);//false
 
Integer num5 = Integer.valueOf(12);
Integer num6 = Integer.valueOf(12);
System.out.println(num5 == num6);//false


我的总结:对于享元模式,将最常用的封装以便于我们可以复用!

 6、枚举


      为什么要有枚举?

     问题:要定义星期几或性别的变量,该怎么定义?假设用1-7分别表示星期一到星期日,但有人可能会写成int weekday = 0;或即使使用常量方式也无法阻止意外。
枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错。枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。
 
    用普通类如何实现枚举功能,定义一个Weekday的类来模拟枚举功能。
    1、私有的构造方法。
    2、每个元素分别用一个公有的静态成员变量表示。
     可以有若干公有方法或抽象方法。采用抽象方法定义nextDay就将大量的if.else语句转移成了一个个独立的类

 

Eg:package july78javaEnhance;
//很好的一道题目。
 
enum TrafficLamp{
    /**
     * 对于这道题目而言,使用的其实是匿名对象内部类!
     * 枚举最简单的创建对象方法:RED,YELLOW,GREEN
     * 对于普通的类而言,创建对象:Person p = new Person();
     *
     */
   
    RED(30){
 
        @Override
        public TrafficLamp nextLamp() {
            return YELLOW;
        }
       
    },
   
    YELLOW(40){
 
        @Override
        public TrafficLamp nextLamp() {
            return GREEN;
        }
       
    },
   
    GREEN(45){
 
        @Override
        public TrafficLamp nextLamp() {
            return RED;
        }
       
    };
    public abstract TrafficLamp nextLamp();
    private int time;
    private TrafficLamp(int time){
        this.time = time;
    }
    public int getTime() {
        return time;
    }
    public void setTime(int time) {
        this.time = time;
    }
   
}
 
public class EnumDemo4 {
    public static void main(String[] args) {
        System.out.println(TrafficLamp.RED.nextLamp());
        System.out.println(TrafficLamp.RED.nextLamp().getTime());
       
    }
}


 

 、反射实现框架功能

 

框架与框架要解决的核心问题

我做房子卖给用户住,由用户自己安装门窗和空调,我做的房子就是框架,用户需要使用我的框架,把门窗插入进我提供的框架中。框架与工具类有区别,工具类被用户的类调用,而框架则是调用用户提供的类。

框架要解决的核心问题

我在写框架(房子)时,你这个用户可能还在上小学,还不会写程序呢?我写的框架程序怎样能调用到你以后写的类(门窗)呢?

因为在写才程序时无法知道要被调用的类名,所以,在程序中无法直接new 某个类的实例对象了,而要用反射方式来做。

 

综合案例

先直接用new语句创建ArrayList和HashSet的实例对象,演示用eclipse自动生成 ReflectPoint类的equals和hashcode方法,比较两个集合的运行结果差异。

然后改为采用配置文件加反射的方式创建ArrayList和HashSet的实例对象,比较观察运行结果差异。

引入了elipse对资源文件的管理方式的讲解。

 

Eg:
package july78javaEnhance;
//利用资源文件加上反射操作!
 
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Collection;
import java.util.Properties;
 
public class ReflectPropertiesDemo8 {
    public static void main(String[] args) throws Exception {
        //写出来的三个全部是可以的,但是相对又不一样!
       
        //可以的绝对路径InputStreamips = new FileInputStream("src/july78javaEnhance/MyPro.properties");//将这个文件加载进来!
       
        //可以的InputStreamips =ReflectPropertiesDemo8.class.getResourceAsStream("MyPro.properties");
        InputStream ips =ReflectPropertiesDemo8.class.getClassLoader().getResourceAsStream("july78javaEnhance/MyPro.properties");
        Properties pro = new Properties();
        pro.load(ips);
        ips.close();
       
        String className =pro.getProperty("className");
       
        Collection col =(Collection) Class.forName(className).newInstance();
       
        //Collection col =new TreeSet();//这样的做法也可以但是现在不想通过在等号右边具体的新建名称来做!
       
        col.add(12);
        col.add(13);
        col.add(12);
        col.add(23);
        col.add(36);
        System.out.println(col);
    }
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的体育馆管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本体育馆管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此体育馆管理系统利用当下成熟完善的SpringBoot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线选择试题并完成答题,在线查看考核分数。管理员管理收货地址管理、购物车管理、场地管理、场地订单管理、字典管理、赛事管理、赛事收藏管理、赛事评价管理、赛事订单管理、商品管理、商品收藏管理、商品评价管理、商品订单管理、用户管理、管理员管理等功能。体育馆管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:体育馆管理系统;SpringBoot框架;Mysql;自动化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值