自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 收藏
  • 关注

原创 <T extends Comparable<? super T>>这个怎么理解

? super T : 语法将泛型类限制为所有T的超类(包括T自身)T extends Comparable  : T为Comparable的子类我一般都是class Student implements Comparable{//////////}这么写的啊……class Student implements Comparable &lt;Stude...

2014-08-31 00:09:31 244

原创 Java泛型疑难解析

几年前当Java5还未正式发布的时候,看到过一些人写的介绍Tiger中的新特性,当时对我第一感觉冲击最大的就是泛型(generics)和注释(annotation),因为它们直接影响了我们编码的语法习惯。在后来的使用过程中,对于泛型一直没有特别深入的使用过,没有遇到那样的需求和场景。只需要了解Java中的泛型是编译期的,运行期被“擦拭”掉了;然后还有几种通配符的表示就足够了。 直到一...

2014-08-30 23:16:21 505

原创 实例059 - Map映射集合实现省市级联选择框

心法领悟059:掌握各种Map集合。Map集合的具体实现有很多,应该根据需要来选择。其中HashMap是最常用的映射集合,它只允许一条记录的键为null,但是却不限制集合中值为null的数量。HashTable实现了一个映射,它不允许任何键值为空,TreeMap集合将对集合中的键值排序,默认排序方式为升序。 public static Map&lt;String,String[]&...

2014-08-25 06:23:07 292

原创 实例058 - 用TreeSet生成不重复自动排序随机数组

心法领悟058:如何有效地提取Set集合的数据。Integer[] array = set.toArray(new Integer[0]);import java.util.ArrayList;import java.util.Random;import java.util.TreeSet;public class RandomSortArray { ...

2014-08-25 06:22:53 216

原创 实例057 - 用List集合传递学生信息

心法领悟057:更高级的List&lt;T&gt;泛型集合List&lt;T&gt;泛型集合表示可通过索引访问的对象的强类型列表。注意JTable的用法。import java.awt.BorderLayout;import java.awt.EventQueue;import java.util.ArrayList;import java.util.List;...

2014-08-25 06:22:41 282

原创 实例056 - 用动态数组ArrayList保存学生姓名

ArrayList集合可以看做动态数组,可以随时向数组中添加和删除元素,如果要获取普通数组,还可以通过该类的toArray()方法获得。import java.awt.BorderLayout;import java.awt.EventQueue;import javax.swing.AbstractListModel;import javax.swing.DefaultL...

2014-08-25 06:22:26 922

原创 实例055 - 反转数组中元素顺序

实现思路:把数组最后一个元素与第一个元素互换,倒数第二个元素与第二个元素互换,依此类推,直到把所有数组元素反转替换。import java.awt.EventQueue;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.Insets;import java.awt...

2014-08-25 06:22:01 160

原创 实例054 - 使用Arrays.sort方法对数组进行排序

心法领悟054:有效利用Arrays类。Arrays类提供了创建、操作、搜索和排序数组的方法。在程序开发中有效利用Arrays类的各种方法来完成数组操作将大幅度提升程序开发的效率,避免错误。import java.awt.BorderLayout;import java.awt.EventQueue;import java.util.Arrays;import javax...

2014-08-23 17:50:24 476

原创 实例053 - 使用直接插入法

InsertSort算法插入排序 是将一个记录插入到有序数列中,使得到的新数列仍然有序。插入排序算法的思路是,将n个有序数存放在数组a中,要插入的数为x,首先确定x插在数组中的位置p,数组中p之后的元素都向后移一个位置,空出a(p),将x放入a(p)。这样既可实现插入后数列仍然有序。下面的算法把 查找插入位置 和 后移数组元素 合并在一起实现,提高了效率。import java.a...

2014-08-23 15:04:46 510

原创 MoreWindows白话经典算法之七大排序

这是本人(MoreWindows)在研一上课时所整理的文档,包括冒泡排序,直接插入排序,直接选择排序,希尔排序,归并排序,快速排序和堆排序这七种常用的排序方法,这些文章不仅使我在考试中取了不错的成绩,也为后来顺利面过迅雷,腾讯,微软打下了良好的基础,现在整理成电子书形式,希望能对大家有所帮助。...

2014-08-23 14:23:23 165

原创 实例052 - 使用直接插入排序

心法领悟052:如何评价排序算法的好坏。评价排序算法好坏的标准主要有两条,分别为:所需的时间和所需的辅助空间算法本身的复杂程度import java.awt.EventQueue;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.Insets;im...

2014-08-23 13:17:34 146

原创 实例051 - 使用冒泡排序法

心法领悟051:编译器可以自动计算数组长度。例如:int[] array = {1,2,3,4,5}import java.awt.BorderLayout;import java.awt.EventQueue;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.border....

2014-08-23 13:17:05 154

原创 实例050 - 使用选择排序法

心法领悟050:如果数组有重复值,应该使用选择排序(selection sort)。选择排序法从数组中挑选最大值并放在数组最后,而遇到重复的相等值不会做任何处理,所以如果程序允许数组有重复值的情况,建议使用 选择排序法, 因为它的数据交换次数较少,相对速度也会略微提升,这取决于数组中重复值的数量。import java.awt.BorderLayout;import java.aw...

2014-08-22 05:37:07 152

原创 实例049 - 用数组反转字符串。

心法领悟049:多掌握程序算法。现在的高级语言中已经为开发者预定义了很多算法的实现,但这并不代表着开发人员就不需要掌握算法,包括语言中实现的和未实现的。封装好的代码并不一定就适合现有的程序,也无法提供特殊的处理过程。所以开发者必须掌握常用的算法,并根据具体应用决定使用哪个算法使程序实现最高运行效率。注:StringBuilder类的reverse()方法可以实现字符串的反转。imp...

2014-08-22 05:36:53 154

原创 实例048 - 复选框控件数组

心法领悟048:使代码更通用。import java.awt.BorderLayout;import java.awt.EventQueue;import java.awt.GridLayout;import javax.swing.JCheckBox;import javax.swing.JFrame;import javax.swing.JPanel;imp...

2014-08-22 05:36:37 211

原创 实例047 - 按钮控件数组实现计算器界面

心法领悟047:用数据管理重复类型的数据。import java.awt.Container;import java.awt.GridLayout;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.UIManager;im...

2014-08-22 05:36:22 364 1

原创 实例046 - 数组的下标界限

心法领悟046:格式文本框控件的输入。在JFormatedTextField文本框控件运行期间可以输入非数字或者任意字符,它是在控件失去焦点时进行数据验证的。如果格式不被指定的类型格式器支持,将销毁本次输入。这样用户就必须重新输入标准格式的数据。import java.awt.EventQueue;import java.awt.event.ActionEvent;import...

2014-08-22 05:35:57 174

原创 实例045 - 用数组设置JTable表格的列名与列宽

心法领悟045:给表格列名留个位置。如果直接将表格控件添加到滚动面板以外的容器中,首先应该通过JTable类的getTableHeader()方法获取表格的JTableHeader表头类的对象,然后再将该对象添加到容器的相应位置,否则表格将没有表头,无法显示任何列名称。import java.awt.BorderLayout;import java.awt.EventQueue;...

2014-08-21 05:22:42 663 1

原创 实例044 - 利用数组随机抽取幸运观众

心法领悟044:数组的静态初始化在创建与初始化数组时,通常是先定义指定类型的数组变量,然后用new关键字创建数组,再分别对数组元素进行赋值。例如:int[] array = new int[3];array[0]=1;array[1]=2;array[2]=3;Java支持静态数组初始化,在定义数组的同时为数组分配空间并赋值。例如:int[] array = {1,...

2014-08-21 05:22:21 912

原创 实例043 - 将二维数组中的行列互换

心法领悟043:int[9] arry = ... 是错误的写法,应该是 int[] array = new int[9]。//import java.util.Arrays;public class ArrayRowColumnSwap { // 创建类public static void main(String[] args) { // 创建2维数组 i...

2014-08-21 05:22:01 453

原创 实例042 - 获取一维数组最小值

心法领悟042:精简的for语句。package com.lzw;import java.awt.EventQueue;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;import javax.swing.JButton;imp...

2014-08-21 05:21:43 247

原创 实例041 - 循环的极限

心法领悟041:了解变量的取值范围public class CycUtmost { public static void main(String[] args) { int end=Integer.MAX_VALUE;// 定义循环终止数 int start=end-5;// 定义循环起始数 int count=0;// 定义...

2014-08-21 05:21:29 176

原创 实例040 循环体的过滤器

心法领悟040:让循环多一些控制。break语句和continue语句都是对循环体的控制语句,它们不仅应用于for循环,在任何循环体中都可以使用。灵活使用这些语句可以让循环实现更加复杂的运算和业务处理。public class CycFilter { public static void main(String[] args) { // 创建数组 ...

2014-08-20 00:30:03 94

原创 实例039 终止循环体

心法领悟039:用break避免死循环。充分利用循环可以提高程序的开发与执行效率,但是如果不注重循环中的算法很容易导致程序的死循环,那将是程序的死穴。所以在循环体中要对可能出现的特殊情况适用break语句中断循环。public class BreakCyc { public static void main(String[] args) { System.o...

2014-08-20 00:29:48 83

原创 实例038 - foreach 循环优于for循环

心法领悟038:使用foreach遍历数据。在JDK1.5之前使用for循环对集合、数值和迭代器进行遍历,需要创建索引变量、条件表达式,这样会造成代码混乱,并增加出错几率看,并且每次循环中索引变量或迭代器都会出现3次,有两次出错的机会。而且会有一些性能损失,其性能稍微落后于foreach循环。所以对于数据集合的遍历,建议使用foreach循环。import java.util.Arra...

2014-08-20 00:29:19 178

原创 实例037 - for循环输出空心菱形

心法领悟037:没有表达式的for循环。for循环中有3个表达式,这3个表达式都是可选的,也就是说for循环可以没有表达式,如for(;;)这样的for循环将是一个无限循环,读者在使用for循环时应该注意避免无限循环。public class Diamond { public static void main(String[] args) { printHo...

2014-08-20 00:29:05 164

原创 实例036 - 用while循环计算1+1/2!+1/3!...1/20!

心法领悟036:使用BigDecimal类完成大数字与高精度运算。对于高精度要求或大数字的计算,应该使用BigDecimal或BigInteger类,否则Java基本类型的数据无法保证浮点数的精度,也无法对超出其表示范围的数字进行运算。import java.math.BigDecimal;public class Example { public static void...

2014-08-20 00:28:44 758

原创 实例035 - 使用嵌套循环在控制台商输出九九乘法表

心法领悟035:灵活使用嵌套循环。循环语句可以完成复杂的运算,也可以用于控制程序的递归流程,而多层循环可以实现更加复杂的业务逻辑。在处理有规则的大量数据时,应该考虑使用多层循环来优化程序代码,建议添加详细的代码注释,便于以后的维护与修改。public class MultiplicationTable { public static void main(String[] ar...

2014-08-19 06:25:54 110

原创 实例034 - 使用for循环输出杨辉三角

心法领悟034:Java二维数组可以不等长。Java语言中的二维数组其实是一维数组的每个元素都是另一个一维数组,所以第二维数组的长度可以任意。就像本实例中的那样。这比其他语言的数组更灵活,而且多维数组也是如此。定义:杨辉三角形由数字排列组成,可以把它看做一个数字表,其基本特性是两侧数值均为1,其他位置的数值是其正上方的数值与左上角数值之和。/** * @author 李钟尉...

2014-08-19 06:25:34 175

原创 实例033 - 使用while与自增运算符循环遍历数组

心法领悟033:前置与后置的自增运算。/** * @author 李钟尉 */public class ErgodicArray { public static void main(String[] args) { // 创建鸟类数组 String[] aves = new String[] { "白鹭", "丹顶鹤", "黄鹂",...

2014-08-19 06:25:10 138

原创 实例032 - 判断用户输入月份的季节

心法领悟032:融合switch的多个条件,即多个常量结果执行相同的业务处理。 import java.util.Scanner;public class JudgeMonth { public static void main(String[] args) { Scanner scan = new Scanner(System.in);//...

2014-08-19 06:24:48 306

原创 实例031 - 用switch语句根据消费金额计算折扣

心法领悟031:不要忽略负数。public class ProductPrice { public static void main(String[] args) { float money = 1206; // 金额 float rebate = 0f; // 折扣 if (money &gt; 200) { ...

2014-08-19 06:24:26 614

原创 实例030 - 为新员工分配部门

心法领悟030:灵活使用switch语法。在switch语法中每个case关键字可以作为一个条件分支,但是对于多个条件分支采取相同业务处理的情况,可以把多个case分支关联在一起,省略它们之间的break语句,而在最后一个业务相同的case分支中实现业务处理并执行break语句。import java.util.Scanner;public class Example { ...

2014-08-18 05:29:10 338

原创 实例029 - 验证登录信息的合法性

秘笈心法:心法领悟029:判断字符串是否相同。字符串属于对象而非基本数据类型(primitive type),不可以使用“==”来判断是否相当,所以它需要通过equals()方法来判断两个字符串的内容是否相同。如果使用“==”判断的将是两个字符串对象的内存地址,而非字符串内容。import java.util.Scanner;public class CheckLogin {...

2014-08-18 05:28:46 115

原创 实例028 - 以条件语句判断某一年是否为闰年

满足两种条件的年份可以称为闰年。第一,能被4整除但不能被100整除;第二,能被400整除。即year%4 == 0 &amp;&amp; year%100 != 0 || year%400 == 0心法领悟028:简单的if...else语句。三元运算符(? :)是if...else语句的一个简洁写法,可以根据需求来决定使用哪种。前者常用于赋值判断,后者常用于业务流程。im...

2014-08-18 05:28:25 326

原创 实例027 - 不借助第3个变量实现两个变量的互换

心法领悟027:别忘记赋值。本实例演示了如何省略临时变量(第3个变量)实现两个整数类型变量的高效互换。import java.util.Scanner;public class VariableExchange { public static void main(String[] args) { Scanner scan = new Scanner(...

2014-08-18 05:28:11 163

原创 实例026 - 不用乘法运算实现2 x 16

心法领悟026:奇妙的位移运算。通过实例可以看出,一个整数每次执行位移运算中的左移运算n次,相当于这个整数乘以2的n次方。相反,如果执行右移n次运算,则相当于这个整数除以2的n次方。import java.util.Scanner;public class Example { public static void main(String[] args) { ...

2014-08-18 05:27:52 118

原创 实例025 - 更精确地使用浮点数

心法领悟025:小心程序中的货币运算。对于商业程序的开发,一定要注意其中的货币运算,因为计算机无法通过二进制精确地表示所有小数,所以计算机中的小数运算会有一定的误差。虽然误差很小,但是货币运算可能会操作多个有误差的运算结果,长期的数据累计会造成更大的误差,特别是银行使用的系统不允许任何微小的误差,所以我们应该熟练掌握BigDecimal类的用法。技巧:创建BigDecimal类的实例时,...

2014-08-16 16:04:04 116

原创 实例024 - 用三元运算符判断奇数和偶数

心法领悟024:灵活使用 % 运算符求余数。“%”运算符的用途非常广泛,它能够实现数据分页,最简单的方法是可以通过计算奇偶数的方法把数组交叉分为两个数组。它还可以限制数字的范围,如 (N%5)可以限制数字在0~4的范围内。import java.util.Scanner;public class ParityCheck { public static void main...

2014-08-16 15:50:20 145

原创 实例023 - 加密可以这样简单(位运算)

心法领悟023:灵活使用位运算。灵活运用位运算可以实现很多高级、高效的算法。例如,一个数字的位移运算,每左移n位,就等于这个数乘以2的n次方,每右移n位,就等于这个数除以2的n次方,而且这个算法非常快。import java.util.Scanner;public class Example { public static void main(String[] args) ...

2014-08-16 15:40:52 140

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除