Java基础之编程工具与java新特性4月打卡day03
Java基础之编程工具与java新特性4月打卡day03
关于作者
- 作者介绍
🍓 博客主页:作者主页
🍓 简介:JAVA领域优质创作者🥇、一名在校大三学生🎓、在校期间参加各种省赛、国赛,斩获一系列荣誉🏆。
🍓 关注我:关注我学习资料、文档下载统统都有,每日定时更新文章,励志做一名JAVA资深程序猿👨💻。
1、Eclipse开发工具
1.1 Eclipse历史
Eclipse中文翻译为日蚀,指的是吞没一切的光芒,那么这个及其具备挑衅一位的名字实际上是针对于SU年公司。在2000年之后一直处于互联网低潮,而SUN公司从这一低潮之后就再也没有起来过,而后SUN公司最为尴尬的是,他在硬件上没有过多的收益,而且软件的编程语言Java也不是SUN的赚钱工具,它只是变成了一个出卖版权的公司了。
对于Java的IDE(集成开发环境)本身也是经过了一些历史的调整。
1995年的时候,Java诞生,但是SUN公司却高调宣布,我们自己不生成IDE,给其他第三方公司生产;
在Java产生之后,Borland公司来时入手Java的IDE生产,所以后来的JBuilder就成为了Java开发的唯一选择(不选择JBuilder都使用记事本,IDEA,JCREATOR,EDIPLUS….),后俩一直到了JBuilderX之后才正常;
2003年之后有了Eclipse,在2004年之后有了SUN自己的开发工具———NetBeans
而从整个国内的Java开发模式上也一直在发生着改变;
豪华级架构:操作系统+数据库+中间件+开发工具+编程语言;
IBM体系:AIX+IBM DB2+WwbsphereApplicationServer+WSAD;
超级杂牌军体系:UNIX+Oracle+Weblogic+JBuilder;
免费架构:Linux+MySQL+Tomcat/JBoss+Eclipse;
而对于开发工具最早的霸主就是JBuilder,但是遗憾的是,2006年的时候Borland倒闭了,倒闭的原因是因为没有干声多为的开源风潮,因为有许多的学习者,它可能并不需要如此专业的工具,所以当时Borland公司的市场就出现了问题,于是倒闭就成为了必然,最后Borland技术部单独成立了一家技术公司,继续从事JBuilder的研究,但是今天的JBuilder已经基本上无法去问津了,完全被Eclipse取代了。
Eclipse是由IBM开发的,之后将其转送给了今天的Eclipse组织,进行开源项目的推广,而Eclipse的前身是IBM VisualAge,而后IBM根据Eclipse的1.0模型,产生后来的WSAD来发工具。Eclipse本身是免费的,但是其是靠插件收费(中国连插件都不需要收费),其本身有一下几个基本组成:JDT,JUNIT测试工具,CVS客户端,插件开发,用户可以直接登陆www.eclipse.org下载Eclipse的最新版本,JUNO(朱诺,小行星的名字)版,而且Eclipse现在可以直接解压缩后使用,不用单独的安装,是纯粹的绿色版。
当我们Java项目简历完成值周,可以在项目的目录小发现两个文件夹:
Src:是保存所有的*.java程序,都是按照包名称进行保存的;
Bin:保存所有生成的*.class文件,按照包名称进行保存的。
下面简历一个新的类:TestDemo.java
使用Eclipse本身最大的好处在于方便的进行随笔提示,并且在每一次*.java程序保存的时候,会由Eclipse自动的将其编译为*.class文件。
另外在Eclipse之中还可以存在一些代码生成工具,例如:现在有如下简单类
package com.sxau;
public class Person {
private String name;
private int age;
}
这个类肯定是作为简单Java类出现,那么现在很明显简单Java类的开发原则:
- 所有属性封装,已经封装;
- 生成setter,getter方法;
- 构造方法,必须要有无参构造
- 覆写Object中的一些方法
1.2 快捷键
除了以上的生成方式还可以通过快捷键生成
- ALT+/:代码自动补充提示;
- CTRL+1:进行错误代码矫正提示;
- CTRL+D:删除当前行代码;
- CTRL+SHIFT+O:自动导入包;
- CTRL+SHIFT+F:格式化代码显示;
- CTRL+/:注释/取消注释;
- CTRL+shift+l:快捷键列表
- CTRL+H:搜索
项目也可以进行删除操作,但是在删除项目的时候有两种方式:
方式一:是从项目的工作区之中删除,以后可以恢复;
方式二:彻底从硬盘上删除项目。
如果想导入项目则可以使用导入的方式。
以上是利用导入的方式完成了项目的导入,而现在也可以通过导出的方式,将一个项目之中的所有*.class文件自动生成*.jar文件。
1.3 Debug调试
在Eclipse之中,为了方便永华的开发,还提供了DEBUG功能,可以利用此功能进行项目的调试操作,而如果要想进行调试,首先需要设置断点。断点指的是程序执行到此处的时候,自动停止,而后交给人工控制执行。
**范例:**设置断点
package com.util;
public class MyMath {
private MyMath(){}
public static int add(int x, int y){
int temp = 0;
temp = x + y;
return temp;
}
}
测试类
package com.test;
import com.util.MyMath;
public class TestMath {
public static void main(String[] args) {
int result = MyMath.add(2, 3);//将此处设置为断电
System.out.println("加法结果" + result);
}
}
进入调试试图之后可以通过以下方式进行代码调试:
- 单步跳入(F5):进入到代码之中观察代码的执行;
- 单步跳过(F6):不关心代码之中的执行,只关心最终的结果;
- 单步返回(F7):返回到单步跳过的状态
- 恢复执行(F8):不再调试直接将程序运行完成。
1.4 JUNIT测试工具
软件测试行业:2003年——2006年之后,各个公司一直都在招聘软件测试人员,而且都是外包到IBM或微软的公司进行测试。但是,今天的软件测试来讲,这个行业已经很难了。
软件测试是一个黄金职位,对于软件测试是需要有一套完整测试理论和数据设计的,而如果学习过软件工程应该知道软件测试分为两类:
1 黑盒测试:主要是测试功能,例如一些xx版,是不接触代码的,但是公司会提供工具;
2 白盒测试:指的是性能测试,或者是算法调整。
而这几年随着行业的发展,实际上又给出了一种新的测试职位——Use Case(用测)测试工程师,对于这种职位而言,国内的平均待遇是程序员的3-5倍,如果按照正常的一个程序员的工资是8000来算,那么这种人的平均工资就是2-5万,但是人很难难找,一般而言此类人员在行业中需要8-10年的项目经验,并且精通业务。
JUNIT是一个比较常用的测试工具,准们可以进行Use Case测试的,在日后所开发的程序里都要写大量的JUNIT测试程序。
**范例:**定义要测试的程序
package com.util;
public class MyMath {
private MyMath(){}
public static int add(int x, int y){
int temp = 0;
temp = x + y;
return temp;
}
}
测试类
package com.test;
import static org.junit.Assert.*;
import org.junit.Test;
import com.util.MyMath;
import junit.framework.TestCase;
public class MyMathTest {
@Test
public void testAdd() {
TestCase.assertEquals(MyMath.add(2, 3), 5);
}
}
建立JUNIT测试的时候有两种形式:
1.JUNIT Test Case:表示一个测试用例,主要完成一个业务的测试;
2.JUNIT Test Case:表示一组测试用例,包含多个Test Case。
对于JUNIT的测试结果来说,一共分为两种:
1.GREEM BAR:测试通过;
2.RED BAR:测试失败。
2、Java基础新特性
Java的发展从1995年开始经历了许多的过程,但是有三个最具有代表性的JDK版本;
JDK1.0:标志着java的诞生;
JDK1.2:加入了javax.swing组件,这是主要新特性;
JDK1.5:标记为tiger,出现了许多一直沿用至今的特性;
JDK1.8:Lambda表达式、接口的定义加强
已经接触过了一些新特性,例如:自动装箱与拆箱、switch对String的判断支持。
2.1 可变参数
在讲解可变参数之前,首先思考一个问题:如果说现在要实现若干个整型变量的相加操作,问,此方法该如何设计?使用数组接收,因为参数个数不确定,按照之前所学,只能使用数组完成。
package com.demo;
/**
* @author 张晟睿
*
*/
public class TestDemo {
public static void main(String[] args) {
System.out.println(add(new int[]{1}));
System.out.println(add(new int[]{1,2,3}));
System.out.println(add(new int[]{1,2,3,4,5,6,7}));
}
/**
* 实现任意个数的数据相加操作处理
* @param data相加操作数据
* @return 返回多个数据的相加结果
*/
public static int add(int [] data){
int sum = 0;
for (int i = 0; i < data.length; i++) {
sum += data[i];
}
return sum;
}
}
以上的确是实现了技术要求,但是现在有一个新的问题产生了:如果按照题目要求,应该是可以任意的传递多个数据,但是以上实际上传的是一个数据,只不过一个数据使用数组的形式封装。那么为了更好的解决这个问题,可以使用JDK1.5的可变参数的方式来解决此问题
Public [static] [final] 返回值类型 方法名称(参数类型…变量){ //虽然方式改变了
[return [返回值];]
}
发现现在进行方法参数的定义的时候有了一些变化,而这个时候的参数可以说是数组形式。
package com.demo;
/**
* @author 张晟睿
*
*/
public class TestDemo {
public static void main(String[] args) {
System.out.println(add(1));
System.out.println(add(1,2,3));
System.out.println(add(1,2,3,4,5,6,7));
}
/**
* 实现任意个数的数据相加操作处理
* @param data相加操作数据
* @return 返回多个数据的相加结果
*/
public static int add(int ... data){
int sum = 0;
for (int i = 0; i < data.length; i++) {
sum += data[i];
}
return sum;
}
}
有了可变参数在日后进行方法调用的过程之中,就可以比较直观的传递任意多个参数,但是异常的操作在开发之中不建议使用,最好别用。
2.2 foreach输出
首先需要解释的是:foreach并不是新的概念,最早是在NET中提出来的,多为foreach可以理解为增强型的for循环,下面来回顾一下最早的for循环:
package com.demo;
/**
* @author 张晟睿
*
*/
public class TestDemo {
public static void main(String[] args) {
System.out.println(add(1));
System.out.println(add(1,2,3));
System.out.println(add(1,2,3,4,5,6,7));
}
/**
* 实现任意个数的数据相加操作处理
* @param data相加操作数据
* @return 返回多个数据的相加结果
*/
public static int add(int ... data){//接收原始数组
int sum = 0;
for (int i : data) { //将数组中的每一个元素设置给x
sum += i;//这种循环避免了脚标的问题
}
return sum;
}
}
但是有了foreach之后,那么对于数组或者是集合的输出就有了新的支持,语法如下:
for(数据类型 变量 :数组|集合){
//操作代码
}
对于这种for循环避免了数组越界的问题,但依然只是要求会使用,能看懂就行,不过个人建议:最好别用。
2.3 静态导入
如果说想在想要导入一个不同包的类的方法,那么肯定使用import完成,即:如下是之前所采用的格式。
定义一个MyMath类
package com.util;
public class MyMath {
private MyMath(){}
public static int add(int x, int y){
int temp = 0;
temp = x + y;
return temp;
}
public static int sub(int x,int y){
return x-y;
}
public static int mul(int x,int y){
return x*y;
}
public static int div(int x,int y){
return x/y;
}
}
在JDK1.5值周,如果一个雷之中的全部方法都是static型的,则可以使用如下的语法进行导入:
import static 包.类.*;
表示的是将这个指定类之中的全部方法导入进来,最后就好像这些方法全部都是在主类之中定义的一样。
package com.test;
import static com.util.MyMath.*;//静态导入
public class TestMath {
public static void main(String[] args) {
System.out.println(add(10,20));
System.out.println(sub(30,10));
}
}
这种比较难受的方法,也只是出现在讲课之中,本人是绝对不会使用的,你们也可以忘记它。
- 点赞
- 收藏
- 关注作者
评论(0)