笔记
a854507555
这个作者很懒,什么都没留下…
展开
-
访问控制的原因
将程序开发人员按照角色分为类创建者和客户端程序员。 第一个原因就是让客户端程序员无法触及他们不应该触及的地方,这部分对数据类型的内部操作是必须的,但并不是用户解决问题的接口的一部分 第二个原因就是允许库设计者改变类内部的工作方式,而不用担心影响客户端程序员。 public表示紧随其后的元素对任何人都是可用的 private表示出类型创建者和类型的内部方法之外的任何人都不能访问的元素, p翻译 2017-08-24 15:34:36 · 298 阅读 · 0 评论 -
list set map 简述
List(接口) 顺序是 List 最重要的特性;它可保证元素按照规定的顺序排列。List 为 Collection 添加了大量方法,以便我们在 List 中部插入和删除元素(只推荐对LinkedList 这样做)。List 也会生成一个ListIterator(列表反复器),利用它可在一个列表里朝两个方向遍历,同时插入和删除位于列表中部的元素(同样地,只建议对 LinkedList这样做)一般只翻译 2017-03-20 20:50:46 · 281 阅读 · 0 评论 -
equals == 和compare to
待写原创 2017-01-11 11:40:11 · 591 阅读 · 0 评论 -
list能够点出来的方法
boolean add(Object) *保证集合内包含了自变量。如果它没有添加自变量,就返回 false(假) boolean addAll(Collection) *添加自变量内的所有元素。如果没有添加元素,则返回 true(真) void clear() *删除集合内的所有元素 boolean contains(Object) 若集合包含自变量,就返回“真” boolean cont翻译 2017-03-20 20:01:58 · 274 阅读 · 0 评论 -
反复器(Iterator)
public class SimpleCollection { public static void main(String[] args) { Collection c = new ArrayList(); for(int i = 0; i < 10; i++) c.add(Integer.toString(i)); Iterator it = c.iterator(); while(it.ha翻译 2017-03-20 19:56:36 · 189 阅读 · 0 评论 -
hashtable把自己的类当做主键
class Groundhog { int ghNumber; Groundhog(int n) { ghNumber = n; } } class Prediction { boolean shadow = Math.random() > 0.5; public String toString() { if(shadow) return "Six more weeks of Winter!";翻译 2017-03-16 19:49:01 · 305 阅读 · 0 评论 -
Java合成与继承
合成就是包含关系,继承是属于关系, 合成是类中套类,就是在新类中new一个需要导入的对象,然后使用, 继承extends会获得基础类的所有数据成员和方法。private变量是私有的,不能被继承 如果我们想用父类方法,最好的办法是,保持成员变量的私有private,方法要用protected(这个指示符的意义就是可以让继承的类调用父类的方法,还有同一个包里可以互相调用) 我们可以写一个pro原创 2017-02-27 14:11:26 · 345 阅读 · 0 评论 -
方法和作用域中的内部类
可以在方法里写一个内部类,内部类的作用范围是在本方法中package demo; interface Contents { int value(); } interface Destination { String readLabel(); } public class Parcel1 { private void internalTracking(boolean b) { if(b) { cla翻译 2017-03-05 16:23:40 · 200 阅读 · 0 评论 -
从内部类继承 内部类被覆盖 内部类生成的class文件名
从中可以看到,InheritInner只对内部类进行了扩展,没有扩展外部类。但在需要创建一个构建器的时候, 默认对象已经没有意义,我们不能只是传递封装对象的一个句柄。此外,必须在构建器中采用下述语法: enclosingClassHandle.super(); 它提供了必要的句柄,以便程序正确编译。 class WithInner { class Inner {} } public c翻译 2017-03-08 21:55:02 · 477 阅读 · 0 评论 -
对象的容纳——数组
集合类只能容纳对象句柄。但对一个数组,却既可令其直接容纳基本类型的数据,亦可容纳指向对象的句柄。利用象 Integer、Double之类的“封装器”类,可将基本数据类型的值置入一个集合里。创建和访问一个基本数据类型数组,那么比起访问一个封装数据的集合,前者的效率会高出许多。 容纳对象的数组就是Weeble[] b = new Weeble[5]; 方法可以返回一个数组。 public cla翻译 2017-03-14 20:35:58 · 289 阅读 · 0 评论 -
集合 反复器
当我们编写程序时,通常并不能确切地知道最终需要多少个对象。有些时候甚至想用更复杂的方式来保存对象。为解决这个问题,Java 提供了四种类型的“集合类”:Vector(矢量)、BitSet(位集)、Stack(堆栈)以及Hashtable(散列表)。缺点是,加入到集合中,集合会丢失类型信息。 反复器 (1) 用一个名为 elements()的方法要求集合为我们提供一个 Enumeration。我原创 2017-03-14 20:56:06 · 206 阅读 · 0 评论 -
面向对象。
准备再看一遍thinking in java,上次木有看完,这次再从头看。 1,万物皆为对象,将对象视为奇特的变量,除了可以存储数据 还可以在自身上执行操作。 2,程序是对象的集合,他们通过发送消息来告知彼此所要做的。 具体的说,就是把消息想象为 对某个特定对象的方法的调用请求。 3,每个对象都有自己由其他对象所构成的存储, 4,每个对象都有其类型,每个对象都是某个类的实例,每个类转载 2017-08-24 15:15:18 · 210 阅读 · 0 评论 -
hashset去重
hashSet的基本的操作都是有HashMap底层实现的,存入的值就像是 hashmap 的键值一直,不会重复,但是需要满足 他们是equals相等的,如果想要修改操作,则需要修改 equals 和 hashcode 两个方法。原创 2017-08-03 09:37:17 · 289 阅读 · 0 评论 -
继承
当继承现有类型是,也就创造了新的类型,这个新类型不仅包括现有类型的所有成员,而且更重要的是复制了基类的接口,就是说给基类发送的消息也可以发给子类 两种方法是基类与导出类产生差异,1:直接在导出类中添加新的方法,2覆写基类的方法。 像一个和是一个的关系 是一个就是一个导出类可以完全替代一个基类对象, 像是一个,导出类比基类多了些功能,(扩充基类,就可以 是一个); 伴随多态的可互换对象。翻译 2017-08-24 18:04:10 · 218 阅读 · 0 评论 -
构建自己的违例 和 finally
构建自己的违例首先需要继承一个违例 class MyException extends Exception 假如我们不明确调用一个基础类构建器,编译器会自动调用基础类默认构建器 如果处理了异常,不把异常抛给jvm,代码可以继续跑 finally ,无论如何有一块代码想执行,在最后加上finally原创 2017-04-24 19:49:56 · 222 阅读 · 0 评论 -
回调
待写原创 2017-03-17 10:30:56 · 164 阅读 · 0 评论 -
Collection或 Map不可修改 还有同步
Collection c = new ArrayList(); Collection1.fill(c); // Insert useful data c = Collections.unmodifiableCollection(c); List a = new ArrayList(); Collection1.fill(a); a = Collections.unmodifiableList(a原创 2017-04-10 20:21:29 · 234 阅读 · 0 评论 -
Collections类中的实用工具
enumeration(Collection) 为自变量产生原始风格的Enumeration(枚举) max(Collection),min(Collection) 在自变量中用集合内对象的自然比较方法产生最大或最小元素 max(Collection,Comparator),min(Collection,Comparator) 在集合内用比较器产生最大或最小元素 nCopies(int n,翻译 2017-04-10 20:09:55 · 176 阅读 · 0 评论 -
array的sort和binarySearch方法
1,若在执行一次binarySearch()之前不调用 sort(),便会发生不可预测的行为,其中甚至包括无限循环。 2,binarySearch(object[ ], int fromIndex, int endIndex, object key); 搜索时,存在时由0开始计数。不存在时由1开始计数; 对String 的排序以及搜索是相似的,但在运行程序的时候,我们会注意到一个有趣的现象:原创 2017-04-10 19:48:25 · 613 阅读 · 0 评论 -
匿名内部类
匿名内部类,没有名字的内部类。可以是实体类,也可以是接口。 public class Demo { public static void main(String[] args) { Person p = new Person() { public void eat() {原创 2017-03-05 17:53:55 · 204 阅读 · 0 评论 -
内部类 static内部类
abstract class Contents { abstract public int value(); } interface Destination { String readLabel(); } public class Parcel3 { private class PContents extends Contents { private int i = 11; pu翻译 2017-03-02 21:51:49 · 261 阅读 · 0 评论 -
sql跨服务器查询数据库
现在使用的是sqlserver://192.168.1.49;databaseName=JIAOZHOU_TEST,要连接的为192.168.1.86的JIAOZHOU库 1.在192.168.1.49中执行下面的2句语句(只在服务器建好后执行一下就可以,其他时候不需要执行这两句)原创 2017-02-24 17:33:25 · 2529 阅读 · 0 评论 -
static简略
public class demo1 { /** * @param args */ public static void main(String[] args) { demo2 aDemo1=new demo2(); demo2 aDemo2=new demo2(); aDemo1.b++; System.out.print(aDemo1.b++); System.原创 2017-02-06 21:10:41 · 214 阅读 · 0 评论 -
同一个类中用this 构建器调用构建器
尽管可用this 调用一个构建器,但不可调用两个,构建器调用必须是我们做的第一件事情,否则会收到编译程序的报错信息 Flower() { this("hi", 47); System.out.println( "default constructor (no args)"); } Flower(String s, int petals) { this(petals); this原创 2017-02-15 21:05:31 · 215 阅读 · 0 评论 -
后期绑定,过载与覆盖
Shape s = new Circle();shape是父类,circle是子类,两者都有一个draw的方法 s.draw调用的是circle的方法,因为后期绑定已经介入(多形性) 过载”是指同一样东西在不同的地方具有多种含义;而“覆盖”是指它随时随地都只有一种含义,只是原先的含义完全被后来的含义取代了。 父类有个方法public void a(int a),子类的方法public v原创 2017-02-28 22:05:54 · 501 阅读 · 0 评论 -
继承类初始化的过程
class Insect { int i = 9; int j; Insect() { prt("i = " + i + ", j = " + j); j = 39; } static int x1 = prt("static Insect.x1 initialized"); static int prt(String s) { System.out.println(s);翻译 2017-02-28 20:31:44 · 397 阅读 · 0 评论 -
继承:父类的构建器有自变量,子类的构建器必须调用父类的构建器super(i)
1. 含有自变量的构建器 上述例子有自己默认的构建器;也就是说,它们不含任何自变量。编译器可以很容易地调用它们,因为不存 在具体传递什么自变量的问题。如果类没有默认的自变量,或者想调用含有一个自变量的某个基础类构建 器,必须明确地编写对基础类的调用代码。这是用 super 关键字以及适当的自变量列表实现的,如下所示: class Game { Game(int i) { System.翻译 2017-02-23 21:30:46 · 315 阅读 · 0 评论 -
运算符优先级,for循环的标签
若将一个float 值与一个double值相乘,结果就是 double;如将一个 int和一个 long 值相加,则结果为long。 Ulcer(溃疡) Unary:一元 + - + + - [[ 其余的 ]] Addicts(患者) Arithmetic(shift);算术(和移位) * / % + - > Really(特别) Relational:关系 > = Like(喜欢) L原创 2017-02-13 21:26:02 · 437 阅读 · 0 评论 -
方法过载,传参时,参数是主数据类型自动转型
若我们的数据类型“小于”方法中使用的自变量,就会对那种 数据类型进行“转型”处理。char 获得的效果稍有些不同,这是由于假期它没有发现一个准确的char 匹 配,就会转型为int。 方法采用了容量更小、范围更窄的主类型值。若我们的自变量范围比它宽,就必须用括号中的类型 名将其转为适当的类型。如果不这样做,编译器会报告出错。这是一种“缩小转换”。也就是说,在造型或转型过程中可能丢失一些信息翻译 2017-02-14 22:09:05 · 385 阅读 · 0 评论 -
String StringBuffer和StringBuild的小计
首先执行速度上StringBuild大于StringBuffer大于String 造成速度上差异的原因在于 String是字符串常量,就是说不可变更的对象, String s="1"; s=s+1; 虽然输出的s是11,但是s对象的值是不变的,执行s=s+1时,会创建一个新的对象,因此最开始的s不变,因此每次对String类型的字符串进行操作都会新建一个对象,当废弃对象变多时,原来的对象原创 2017-01-17 21:46:39 · 197 阅读 · 0 评论 -
=号以及对象的=指向地址
几乎所有运算符都只能操作“主类型”(Primitives)。唯一的例外是“=”、“==”和“!=”,它们能操作 所有对象(也是对象易令人混淆的一个地方)。除此以外,String 类支持“+”和“+=”。但是string是拼接字符,使其连接起来。 注意运算符的优先级。 赋值是用等号运算符(=)进行的。它的意思是“取得右边的值,把它复制到左边” 右边的值可以是任何常数、变量或者表达式,只要原创 2017-02-07 20:18:11 · 295 阅读 · 0 评论 -
短路 移位运算符 小记equals
public class demo2 { int i=12; } public static void main(String[] args) { demo2 v1 = new demo2(); demo2 v2 = new demo2(); v1.i = v2.i = 100; System.out.println(v1.equals(v2)); } 输出的是FAL原创 2017-02-09 21:26:19 · 192 阅读 · 0 评论 -
默认构建器 this关键字
默认构建器是没有自变量的。它们的作用是创建一个“空对象”,就是 构造函数,如果没写,会有默认的构造函数 Bird nc = new Bird(); 中 new Bird(); 就是新建一个对象,并调用默认构建器, 如果写了自己的构造函数 class Bush { Bush(int i) {} Bush(double d) {} } new Bush();时会报错,因为自己定义的构原创 2017-02-15 20:20:52 · 239 阅读 · 0 评论 -
抽象方法 接口 多重继承
父类只声明方法名,方法没有实体,子类写自己具体的方法。有抽象方法的类一定是抽象类,但抽象类中并不是所有的方法都是抽象方法。 一个接口中的方法必须都是public的,如果没声明public会自动默认是public。implements接口的类需要定义接口中的所有方法。 抽象类和接口都不可以new对象。原创 2017-03-02 17:12:05 · 372 阅读 · 0 评论 -
final关键字的使用 实体类的空白final final自变量 ,final方法,类
对于基本数据类型,final 会将值变成一个常数;但对于对象句柄,final 会将句柄变成一个常数。进行声明时,必须将句柄初始化到一个具体的对象。而且永远不能将句柄变成指向另一个对象。不能由于某样东西的属性是final,就认定它的值能在编译时期知道, final int i4 = (int)(Math.random()*20); static final int i5 = (int)(Math原创 2017-02-27 20:57:16 · 1030 阅读 · 0 评论 -
数组小记,访问指示符小记
基本数据类型的数组元素会自动初始化成“空”值(对于数值,空值就是零;对于 char,它是null;而对于boolean,它却是 false) 意思就是说int[] a = new int[pRand(20)]; a【i】都是0,没赋值的时候,int的数组自动默认是0原创 2017-02-23 15:13:43 · 182 阅读 · 0 评论 -
主类型默认值几大小,类成员
主类型 默认值 Boolean false Char '\u0000'(null) byte (byte)0 short (short)0 int 0 long 0L float 0.0f double 0.0d 只有被当做是类成员时,主类型才会有默认值。 在函数里声明时,不会自动初始化,就是没有默认值。 public class demo1 { static int a;原创 2017-02-03 20:58:33 · 192 阅读 · 0 评论 -
switch 小记
switch(整数选择因子) { case 整数值1 : 语句; break; case 整数值2 : 语句; break; case 整数值3 : 语句; break; case 整数值4 : 语句; break; case 整数值5 : 语句; break; //.. default:语句; } 其中,“整数选择因子”是一个特殊的表达式,能产生整数值。switch 能将整数选原创 2017-02-14 21:03:13 · 168 阅读 · 0 评论 -
去除小数点后多余的0
待写原创 2017-01-11 16:11:19 · 2728 阅读 · 0 评论 -
replace的用法小记
将取出的2016-12-12转成2016年12月12日 如果需要进行具体位置的转换需要将String转成StringBuffer StringBuffer a = new StringBuffer(str); str.replace(0,1,"需要替换的字符"); //有时需要toString再转成String 或者直接用以下方法 entityListDetl.get(0)原创 2017-01-06 11:11:31 · 367 阅读 · 0 评论