`
sean2012
  • 浏览: 46105 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Java小试牛刀1

阅读更多
Java小试牛刀1



一、快捷方式
Ctrl+1 快速修复(最经典的快捷键,就不用多说了)
Ctrl+D: 删除当前行
Ctrl+Alt+↓ 复制当前行到下一行(复制增加)
Ctrl+Alt+↑ 复制当前行到上一行(复制增加)
Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)
Alt+↑ 当前行和上面一行交互位置(同上)
Alt+← 前一个编辑的页面
Alt+→ 下一个编辑的页面(当然是针对上面那条来说了)
Alt+Enter 显示当前选择资源(工程,or 文件 or文件)的属性
Shift+Enter 在当前行的下一行插入空行(这时鼠标可以在当前行的任一位置,不一定是最后)
Shift+Ctrl+Enter 在当前行插入空行(原理同上条)
Ctrl+Q 定位到最后编辑的地方
Ctrl+L 定位在某行 (对于程序超过100的人就有福音了)
Ctrl+M 最大化当前的Edit或View (再按则反之)
Ctrl+/ 注释当前行,再按则取消注释
Ctrl+O 快速显示 OutLine
Ctrl+T 快速显示当前类的继承结构
Ctrl+W 关闭当前Editer
Ctrl+K 参照选中的Word快速定位到下一个
Ctrl+E 快速显示当前Editer的下拉列表(如果当前页面没有显示的用黑体表示)
Ctrl+/(小键盘) 折叠当前类中的所有代码
Ctrl+×(小键盘) 展开当前类中的所有代码
Ctrl+Space 代码助手完成一些代码的插入(但一般和输入法有冲突,可以修改输入法的热键,也可以暂用Alt+/来代替)
Ctrl+Shift+E 显示管理当前打开的所有的View的管理器(可以选择关闭,激活等操作)
Ctrl+J 正向增量查找(按下Ctrl+J后,你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,则在stutes line中显示没有找到了,查一个单词时,特别实用,这个功能Idea两年前就有了)
Ctrl+Shift+J 反向增量查找(和上条相同,只不过是从后往前查)
Ctrl+Shift+F4 关闭所有打开的Editer
Ctrl+Shift+X 把当前选中的文本全部变味小写
Ctrl+Shift+Y 把当前选中的文本全部变为小写
Ctrl+Shift+F 格式化当前代码
Ctrl+Shift+P 定位到对于的匹配符(譬如{}) (从前面定位后面时,光标要在匹配符里面,后面到前面,则反之)

下面的快捷键是重构里面常用的,本人就自己喜欢且常用的整理一下(注:一般重构的快捷键都是Alt+Shift开头的了)
Alt+Shift+R 重命名 (是我自己最爱用的一个了,尤其是变量和类的Rename,比手工方法能节省很多劳动力)
Alt+Shift+M 抽取方法 (这是重构里面最常用的方法之一了,尤其是对一大堆泥团代码有用)
Alt+Shift+C 修改函数结构(比较实用,有N个函数调用了这个方法,修改一次搞定)
Alt+Shift+L 抽取本地变量( 可以直接把一些魔法数字和字符串抽取成一个变量,尤其是多处调用的时候)
Alt+Shift+F 把Class中的local变量变为field变量 (比较实用的功能)
Alt+Shift+I 合并变量(可能这样说有点不妥Inline)
Alt+Shift+V 移动函数和变量(不怎么常用)
Alt+Shift+Z 重构的后悔药(Undo)

编辑
作用域 功能 快捷键
全局 查找并替换 Ctrl+F
文本编辑器 查找上一个 Ctrl+Shift+K
文本编辑器 查找下一个 Ctrl+K
全局 撤销 Ctrl+Z
全局 复制 Ctrl+C
全局 恢复上一个选择 Alt+Shift+↓
全局 剪切 Ctrl+X
全局 快速修正 Ctrl1+1
全局 内容辅助 Alt+/
全局 全部选中 Ctrl+A
全局 删除 Delete
全局 上下文信息 Alt+?
Alt+Shift+?
Ctrl+Shift+Space
Java编辑器 显示工具提示描述 F2
Java编辑器 选择封装元素 Alt+Shift+↑
Java编辑器 选择上一个元素 Alt+Shift+←
Java编辑器 选择下一个元素 Alt+Shift+→
文本编辑器 增量查找 Ctrl+J
文本编辑器 增量逆向查找 Ctrl+Shift+J
全局 粘贴 Ctrl+V
全局 重做 Ctrl+Y


查看
作用域 功能 快捷键
全局 放大 Ctrl+=
全局 缩小 Ctrl+-


窗口
作用域 功能 快捷键
全局 激活编辑器 F12
全局 切换编辑器 Ctrl+Shift+W
全局 上一个编辑器 Ctrl+Shift+F6
全局 上一个视图 Ctrl+Shift+F7
全局 上一个透视图 Ctrl+Shift+F8
全局 下一个编辑器 Ctrl+F6
全局 下一个视图 Ctrl+F7
全局 下一个透视图 Ctrl+F8
文本编辑器 显示标尺上下文菜单 Ctrl+W
全局 显示视图菜单 Ctrl+F10
全局 显示系统菜单 Alt+-


导航
作用域 功能 快捷键
Java编辑器 打开结构 Ctrl+F3
全局 打开类型 Ctrl+Shift+T
全局 打开类型层次结构 F4
全局 打开声明 F3
全局 打开外部javadoc Shift+F2
全局 打开资源 Ctrl+Shift+R
全局 后退历史记录 Alt+←
全局 前进历史记录 Alt+→
全局 上一个 Ctrl+,
全局 下一个 Ctrl+.
Java编辑器 显示大纲 Ctrl+O
全局 在层次结构中打开类型 Ctrl+Shift+H
全局 转至匹配的括号 Ctrl+Shift+P
全局 转至上一个编辑位置 Ctrl+Q
Java编辑器 转至上一个成员 Ctrl+Shift+↑
Java编辑器 转至下一个成员 Ctrl+Shift+↓
文本编辑器 转至行 Ctrl+L


搜索
作用域 功能 快捷键
全局 出现在文件中 Ctrl+Shift+U
全局 打开搜索对话框 Ctrl+H
全局 工作区中的声明 Ctrl+G
全局 工作区中的引用 Ctrl+Shift+G


文本编辑
作用域 功能 快捷键
文本编辑器 改写切换 Insert
文本编辑器 上滚行 Ctrl+↑
文本编辑器 下滚行 Ctrl+↓


文件
作用域 功能 快捷键
全局 保存 Ctrl+X
Ctrl+S
全局 打印 Ctrl+P
全局 关闭 Ctrl+F4
全局 全部保存 Ctrl+Shift+S
全局 全部关闭 Ctrl+Shift+F4
全局 属性 Alt+Enter
全局 新建 Ctrl+N


项目
作用域 功能 快捷键
全局 全部构建 Ctrl+B


源代码
作用域 功能 快捷键
Java编辑器 格式化 Ctrl+Shift+F
Java编辑器 取消注释 Ctrl+\
Java编辑器 注释 Ctrl+/
Java编辑器 添加导入 Ctrl+Shift+M
Java编辑器 组织导入 Ctrl+Shift+O
Java编辑器 使用try/catch块来包围 未设置,太常用了,所以在这里列出,建议自己设置。
也可以使用Ctrl+1自动修正。


运行
作用域 功能 快捷键
全局 单步返回 F7
全局 单步跳过 F6
全局 单步跳入 F5
全局 单步跳入选择 Ctrl+F5
全局 调试上次启动 F11
全局 继续 F8
全局 使用过滤器单步执行 Shift+F5
全局 添加/去除断点 Ctrl+Shift+B
全局 显示 Ctrl+D
全局 运行上次启动 Ctrl+F11
全局 运行至行 Ctrl+R
全局 执行 Ctrl+U


重构
作用域 功能 快捷键
全局 撤销重构 Alt+Shift+Z
全局 抽取方法 Alt+Shift+M
全局 抽取局部变量 Alt+Shift+L
全局 内联 Alt+Shift+I
全局 移动 Alt+Shift+V
全局 重命名 Alt+Shift+R
全局 重做 Alt+Shift+Y


二、Java  package的作用:

深入分析package与import机制部分

1、不管你有没有使用import指令,存在目前目录下的类都会被编译器优先采用,只要它不属于任何package。这是因为编译器总是先假设您所输入的类名就是该类的全名(不属于任何package),然后-classpath所指定的路径中搜索属于该类的.java文件或.class文件,在这里可以知道default package的角色非常特殊。

2、必须明确告诉编译器我们用到哪个package下的类,导入时或在包名称.类名称中进行引用。导入某个包时,一定要进行-classpath路径指定某个包的位置。你如果指定了多个路径话,如果在一个路径下已经找到了该包话,就优先引用该包的类。

3、当java编译器开始编译某个类的源代码时,首先它会做一件事情,这就是建立“类路径引用表”,它是根据参数-classpath或classpath环境变量来建立的。如果没有指定选项-classpath或环境变量CLASSPATH时,缺省情况下类路径引用表只有一笔记录,即当前的目录(“.”)。环境变量CLASSPATH的内容会被选项-classpath所覆盖,没有累加效果。

4、当编译器将类路径引用表建立好之后,接着编译器要确定它可以利用类引用表里的数据作为相对起始路径,找到所有用到的package。编译器还要完成一张名为“类引用表”与“相对类引用表”的数据结构。

   整个编译程序中package与import机制相关的部分流程如下:
     1)开始
     2)建立类路径引用表与类引用表
     3)如果建立成功:则类名称解析程序
     4)如果已存在该类的类文件,继续其它的编译工作
     5)如果该类的文件不存在,寻找该类的源代码文件
     6)如果找到,则编译该类的源代码,继续其它的编译工作
     7)此时,也可返回到开始,make机制,递归式编译
    如果找不到,编译结束,发出警告信息
     9)如果建立失败:编译结束,发出警告信息。


JAVA动态链接本质研究


1、不管你在同一个源代码(.java)中使用了几个类声明,它们都会一一编译成.class文件,即使是内部类、匿名类都是一样。在java中,对于每一个类所构成的类文件,都可将它视为动态链接库。

2、在类文件中,所有对于特写类的操作都被转换成类的全名。Import除了用来指引编译器解析出正确的类名称之外,没有其它功能。

3、在运行时期,仍然用到一个与编译器相同的程序,就是类路径引用表的建立,而利用动态链接载入类文件的机制流程如下:

    1)开始,建立类路径引用表,根据类文件内部的信息,与类路径引用表的数据合成类文件的绝对路径。
    2)如果找到类文件,检查该类的类文件内部信息,是否符合相对路径信息:如果符合,载入该类。如果不符合,执行错误,发出Exception信息。
    3)如果找不到类文件,则执行错误,发出Exception信息。


     最后,需要说明的是,在java中提供许多的类包,java语言中将完成与计算机底层相关的输入输出、常用的数据类型转换等功能的函数封装在包中。如果你的程序提示找不到这样基础包的话,你就可以用参数-classpath或环境变量classpath进行指定位置来解决此类问题!



三、双彩球摇奖:

package TextPackge;
/**
 * 模拟双色球博彩
 * 
 * @author Sean 2012-9-6
 * 
 */
public class MainBody {

 /**
  * 主程序入口
  * 
  * @param args
  */
 public static void main(String[] args) {
  /**
   * 创建摇奖机
   */
  Ernie ernie = new Ernie();
  /**
   * 放入红球,并启动,抽取7只球
   */
  ernie.input("red",40, 7);
  ernie.start();
  /**
   * 放入蓝球,并启动,抽取2只球
   */
  ernie.input("blue",16, 2);
  ernie.start();
  /**
   * 公布中奖结果
   */
  ernie.announce();
 }
}

package TextPackge;
import java.util.Collections;
import java.util.Comparator;
import java.util.Vector;
/**
 * 摇奖机
 * 
 * @author Sean 2012-9-6
 * @param <T>
 * 
 */
public class Ernie {
 private int m;
 private String color;
 private String redBall;
 private String blueBall;

 /**
  * 创建存储球体的向量
  */
 Vector<Ball> ballList = new Vector<Ball>();
 /**
  * 中奖向量,用于存储中奖球体
  */
 Vector<Ball> luckList = new Vector<Ball>();

 /**
  * 置入球
  * 
  * @param i
  *            放入球的数量
  * @param j
  *            抽取球的数量
  */
 public void input(String color, int n, int m) {
  this.m = m;
  this.color = color;

  /**
   * 置入红球
   */
  if (color.equals("red")) {
   for (int t = 1; t <= n; t++) {
    Ball e = new Ball(t, "red");
    ballList.add(e);
   }
  } else if (color.equals("blue")) { // 置入蓝球
   for (int t = 1; t <= n; t++) {
    Ball e = new Ball(t, "blue");
    ballList.add(e);
   }
  } else {
   System.out.println("球的颜色有误!!!");
  }

 }
 /**
  * 启动摇奖
  */
 public void start() {
  /**
   * 随机抽取球
   */
  if (color.equals("red")) {
   for (int t = 1; t <= m; t++) {
    int i = (int) (Math.random() * ballList.size());
    luckList.add(ballList.get(i));
    ballList.remove(i);
   }
  } else if (color.equals("blue")) {
   for (int t = 1; t <= m; t++) {
    int i = (int) (Math.random() * ballList.size());
    luckList.add(ballList.get(i));
    ballList.remove(i);
   }
  }
  /**
   * 首先对向量内的元素排序 红球升序 蓝球降序
   */
  if (color.equals("red")) {
   redBall = "红球:";
   /**
    * 红球升序
    */
   Collections.sort(luckList, new Comparator<Ball>() {
    /**
     * 实现接口中的方法
     */
    public int compare(Ball o1, Ball o2) {
     return o1.id - o2.id;
    }
   });
  } else if (color.equals("blue")) {
   blueBall = "蓝球:";
   /**
    * 蓝球降序
    */
   Collections.sort(luckList, new Comparator<Ball>() {
    /**
     * 实现接口中的方法
     */
    public int compare(Ball o1, Ball o2) {
     return o2.id - o1.id;
    }
   });
  }
  /**
   * 将结果存入结果向量中
   */
  for (int t = 0; t < luckList.size(); t++) {
   if (color.equals("red")) {
    redBall += luckList.get(t).id + "  ";
   } else if (color.equals("blue")) {
    blueBall += luckList.get(t).id + "  ";
   }
  }
  luckList.clear();
 }

 /**
  * 公布结果
  */
 public void announce() {
  /**
   * 公布结果
   */
  System.out.println(redBall+blueBall);
 }

}

 /**
  * 构造函数
  * 
  * @param id
  *            编号
  * @param color
  *            颜色
  */
 public Ball(int id, String color) {
  this.id = id;
  this.color = color;
 }
}



心得:

    双色彩球摇奖,这是一个简单的数据模拟实验,从中学会了使用向量Vector存储数据,通过随机产生一个下标来抽取向量中的数据,存入一个优先队列中去,这样就可以自动生成一个有序队列,最后可以输出优先队列来公布这个中奖结果;功能很简单,在这个小实验中,让我切实的领会了JAVA一切皆为对象的特点,摇奖机是一个对象,每个球是一个对象;通过控制摇奖机来取出随机的彩球来得到最终的结果。其中,当向量中取出了该彩球后,立刻执行ballList.remove(n);语句,删除该元素,可避免抽到重复的彩球。



分享到:
评论

相关推荐

    mongodb在java中小试牛刀

    1. **MongoTemplate**: 这是Spring Data MongoDB的主要工作马车,它封装了与MongoDB的交互。MongoTemplate提供了保存、更新、删除文档,以及执行聚合和查询的方法。例如,你可以使用`insert()`或`save()`方法来插入...

    小试牛刀代码(用于借鉴)

    本文将深入探讨这两个主题,并结合“小试牛刀代码”这一主题,为开发者提供一些实用的见解和借鉴。 首先,SQL(Structured Query Language)是用于管理和处理关系型数据库的标准编程语言。它允许我们创建、查询、...

    JExcel / 小试牛刀

    标题中的“JExcel / 小试牛刀”表明这是一个关于使用JExcel库进行电子表格操作的实践案例。JExcel是一个Java库,它允许开发者在Java应用程序中读取、写入和修改Excel文件,极大地简化了与Excel数据交互的工作。在这...

    java-swing编程小试牛刀之图片查看器

    1. **JFrame** - 整个应用的主窗口。 2. **JMenuBar** - 位于窗口顶部的菜单栏,提供“文件”和“帮助”两个菜单选项。 3. **MainPanel** - 主要用于展示图片的面板。 4. **RightPanel** - 位于主面板右侧,用于展示...

    J2ME RMS 小试牛刀

    **J2ME RMS小试牛刀** 在移动设备开发领域,Java 2 Micro Edition(J2ME)曾经占据着重要的地位,尤其在功能手机时代,它为开发者提供了跨平台的应用程序开发框架。J2ME中的Record Management System(RMS)是用于...

    spring-boot小试牛刀

    标题“spring-boot小试牛刀”表明我们即将探讨的是关于Spring Boot的基础知识和实践应用。Spring Boot是由Pivotal团队提供的一个用于简化Spring应用程序初始搭建以及开发过程的框架。它预设了许多默认配置,帮助...

    MVC新手小试牛刀-泡泡堂

    在Java项目中,模型通常包含与数据库交互的DAO(Data Access Object)层,以及业务逻辑处理的Service层。它们处理数据的增删改查,确保数据的正确性和完整性。 2. 视图(View):视图是用户看到和与之交互的界面。...

    log4j之小试牛刀

    《log4j之小试牛刀》 在Java开发中,日志记录是不可或缺的一部分,它可以帮助我们追踪程序运行状态,定位错误,进行性能分析。Log4j作为一款广泛使用的日志框架,因其灵活的配置、强大的功能以及高效的性能而备受...

    JSP做的留言板,自己小试牛刀!

    **JSP(JavaServer Pages)技术详解** JSP(JavaServer Pages)是Java平台上的一个标准,用于开发动态Web应用程序。它是由Sun Microsystems(现在已被Oracle公司收购)推出的,主要目的是简化HTML页面中的服务器端...

    Hibernate小试牛刀

    【标题】:“Hibernate小试牛刀” 在Java开发领域,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作。本篇内容将深入探讨Hibernate的基本概念、安装配置以及简单应用,帮助初学者快速...

    springboot整合vue项目(小试牛刀)

    SpringbootVueApplication.java resources static index.html vue-demo dist index.html static ... pom.xml ``` 项目运行 现在,我们可以运行 Spring Boot 项目,并访问 Vue 项目的静态文件。我们可以使用浏览器...

    Java11新特性之HttpClient小试牛刀

    //1.set connect timeout HttpClient client = HttpClient.newBuilder() .connectTimeout(Duration.ofMillis(5000)) .followRedirects(HttpClient.Redirect.NORMAL) .build(); //2.set read timeout ...

    thrift 小试牛刀

    同样地,对于Java示例,通过`ant`工具编译生成的Java代码,之后运行`./JavaServer`和`./JavaClient simple`启动服务端和客户端。 **知识点五:Thrift的应用场景与扩展资源** Thrift不仅适用于构建分布式系统和...

    Java实验指导书 2009

    **小试牛刀:** - 实践基本的数据类型操作,如整型、浮点型、字符型等。 - 编写简单的控制结构程序,如if-else语句、switch-case语句。 **挑战自我:** - 设计并实现一个简单的计算器程序,支持加减乘除四则运算。 ...

    跟我做:搭建Java运行环境.ppt

    任务三:小试牛刀(学习Java语言基础) * 学习Java语言的基本语法和数据类型 * 了解变量、数据类型、运算符和控制流程 任务四:挑战选择(使用分支控制流程) * 学习使用分支控制流程 * 了解if语句和switch语句的...

    八进制数与十进制数转化 代码下载

    数值转换 代码下载 初学者学编程,小试牛刀

    模拟windows计算器java基于netbeans编写

    【描述】:“很完美的模拟了windows计算器的运行,小试牛刀,用做课程设计。” 这个项目充分展示了如何用Java来构建一个功能完备的用户界面(UI),并且实现了与真实Windows计算器相似的操作逻辑。作为一个课程设计...

    8位数号码段计算器软件JAVA版及原代码

    号码段计算器 例:00000001-0026000号码段,每段步进值为100,就可以通过...默认号码为8位数,最大也只能计算10000个号码段,原代码也在包内,这是初学JAVA的小试牛刀,各位也可以自己修改默认号码位数和最大计算号码段数.

Global site tag (gtag.js) - Google Analytics