构造方法

java源码 -- LinkedHashSet

邮差的信 提交于 2019-11-28 11:39:25
问题 (1)LinkedHashSet的底层使用什么存储元素? (2)LinkedHashSet与HashSet有什么不同? (3)LinkedHashSet是有序的吗? (4)LinkedHashSet支持按元素访问顺序排序吗? 源码分析 LinkedHashSet继承自HashSet,让我们直接上源码来看看它们有什么不同。 package java.util; // LinkedHashSet继承自HashSet public class LinkedHashSet<E> extends HashSet<E> implements Set<E>, Cloneable, java.io.Serializable { private static final long serialVersionUID = -2851667679971038690L; // 传入容量和装载因子 public LinkedHashSet(int initialCapacity, float loadFactor) { super(initialCapacity, loadFactor, true); } // 只传入容量, 装载因子默认为0.75 public LinkedHashSet(int initialCapacity) { super(initialCapacity, .75f, true)

Java 保留两位小数

て烟熏妆下的殇ゞ 提交于 2019-11-28 11:27:40
java保留小数问题的方法: 方法一:四舍五入 使用java.Math.BigDecimal类    double d = 12.345;   BigDecimal bd = new BigDecimal(2,BigDecimal.ROUND_HALF_UP).doubleValue(); 方法二:使用java.text.DecimalFormat类    double d = 12.345;   DecimalFormat dFormat = new DecimalFormat(".00");   dFormat.format(d);     (".00")表示保留小数点后两位小数 方法三:使用java.lang.Math类    double d = 12.345;   Math.round(d);   Math.round(double d);//返回lang类型   Math.round(float f);//返回int类型 今天在使用该方法得到保留2为小数的数字时,得到的总是整数,代码如下: standardP = ((double)Math.round(standard * 10000))/100 + "%";//standard 为两个变量相除得到的double类型的值 后来查看API发现返回值类型为lang,果断实行强制类型转换。所以再使用此方法保留小数时请慎重。

java基础-《JAVA语言程序设计与数据结构》笔记

爷,独闯天下 提交于 2019-11-28 08:46:43
最近差不多把java语言部分学习了一遍,这里把之前书上做标记的内容记录一下,巩固基础。 一、 类和对象 1. java默认值:引用类型数据域为null,数值类型数据域的默认值是0,boolean类型数据域的默认值为false,char类型数据域的默认值为“\u0000”。 其中, java没有给方法中的局部变量赋默认值 。 2. 可见性修饰符:private修饰符只能应用在类的成员上,而public可以用在类或类的成员上。在局部变量上使用修饰符public和private都会导致编译错误。 3.变量作用域:实例变量和静态变量的作用域是整个类。 4.this语句:java规定了,在构造方法中语句this应在任何其他可执行语句之前出现。 5.包装类:java中处于对性能的考虑,基本数据类型不作为对象使用。但为了方便,在java.lang包里面提供了各基本数据类型对应的包装类。 包装类没有无参构造方法,可以使用基本数据类型值或表示数值的字符串来构造包装类。如:new Double(4.2)或new Double("4.2")。 基本类型值与其对应的包装类间的转换过程称为“装箱”或“拆箱”。 6.String类为:String变量存储的是对 不可变的String对象 的引用,String对象里存储的才是字符串的值。但约定俗成,经常使用术语字符串来表示String变量

缓冲流

坚强是说给别人听的谎言 提交于 2019-11-28 08:22:50
BufferedOutputStream ————字节缓冲输出流 继承自父类的共性方法 public void close()——关闭此输出流并释放与此流相关联的任何系统资源。 public void flush()——刷新此输出流并强制任何缓冲的输出字节被写出。 public void write(byte[ ] b)——将b.length字节从指定的字节数组写入到此输出流。 public void write(byte[ ] b,int off,int len)——从指定的字节数组写入len字节,从偏移量off开始输出到此输出流。 public abstract void write(int b)——将指定的字节输出流。 构造方法 BufferedOutputStream (OutputStream out)——创建一个新的缓冲输出流,以将数据写入指定的底层输出流。 BufferedOutputStream (OutputStream out,int size)——创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的底层输出流。 参数 OutputStream out————字节输出流 我们可以传递FileOutPutStream,缓冲流会给FileOutPutStream增加一个缓冲区,提高FileOutPutStream的写入效率。 int size———————

缓冲流

拥有回忆 提交于 2019-11-28 08:22:40
缓冲流 前面学习的四个流FileXXX,他们的读取过程是java程序-->JVM --> OS -->文件,比如是使用字节输入流,那么就一次一个字节一层层返回到java程序,效率比较低。现在利用缓冲流,可以先创建一个缓冲区数组,一次先把文件的多个字节读入缓冲区,然后再一层层返回到java程序,这样就可以提高效率了。 1、缓冲流分类 字节缓冲输出流:java.io.BufferedOutputStream extends OutputStream 字节缓冲输入流:java.io.BufferedInputStream extends InputStream 字符缓冲输出流:java.io.BufferedWriter extends Writer 字符缓冲输入流:java.io.BufferedRead extends Reader 2、字节缓冲输出流:java.io.BufferedOutputStream extends OutputStream 由于该流是继承自OutputStream的,因此可以使用继承自父类OutputStream的方法 方法 作用 public void close() 关闭输出流并释放与此流相关的任何系统资源 public void flush() 刷新输出流,并强制任何缓冲的输出字节被写出 public void write(byte[] b) 将b

面向对象

前提是你 提交于 2019-11-28 08:14:16
1:成员变量和局部变量的区别 (1)在类中的位置不同 成员变量:类中方法外 局部变量:方法定义中或者方法声明上 (2)在内存中的位置不同 成员变量:在堆中 局部变量:在栈中 (3)生命周期不同 成员变量:随着对象的创建而存在,随着对象的消失而消失 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失 (4)初始化值不同 成员变量:有默认值 局部变量:没有默认值,必须定义,赋值,然后才能使用 注意事项: 局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。 2:类作为形式参数的问题? (1)如果你看到一个方法需要的参数是一个类名,就应该知道这里实际需要的是一个具体的对象。 (2)形式参数的问题: 基本类型:形式参数的改变不影响实际参数 引用类型:形式参数的改变直接影响实际参数 3:匿名对象 (1)没有名字的对象 (2)应用场景 A:调用方法,仅仅只调用一次的时候。仅仅只调用一次的时候。 注意:调用多次的时候,不适合。 那么,这种匿名调用有什么好处吗? 有,匿名对象调用完毕就是垃圾。可以被垃圾回收器回收。 b:可以作为实际参数传递。 4:封装 (1)隐藏实现细节,提供公共的访问方式 (2)好处: A:隐藏对象的属性和实现细节,提供公共的访问方式 B:提高代码的复用性 C:提高代码的安全性 (3)设计原则 把不想让外界知道的实现细节给隐藏起来,提供公共的访问方式

Java面向对象(二)_封装、static、继承、多态、抽象、接口

非 Y 不嫁゛ 提交于 2019-11-28 07:23:57
备注:如有错误请给予联系 1. 面向对象的封装特性 在面向对象程式设计方法中,封装(英语: Encapsulation)是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。 要访问该类的代码和数据,必须通过严格的接口控制。 封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。 适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。 封装的优点 1. 良好的封装能够减少耦合。 2. 类内部的结构可以自由修改。 3. 可以对成员变量进行更精确的控制。 4. 隐藏信息,实现细节。 实现 Java封装的步骤 1. 修改属性的可见性来限制对属性的访问(一般限制为private),例如: 1 public class Person { 2 private String name; 3 private int age; 4 } 这段代码中,将 name 和 age 属性设置为私有的,只能本类才能访问, 其他类都访问不了,如此就对信息进行了隐藏。 2. 对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法,用于对私有属性的访问,例如: 1 public class Person{ 2 private String name; 3 private int age;

JavaSE Day5

坚强是说给别人听的谎言 提交于 2019-11-28 07:17:58
本节内容 1.类与对象 2.创建对象 3.对象的内存剖析 4.构造方法 5.方法 一、类与对象 俗话说的好万物皆对象。 这些都是对象 我们知道Java语言是完全面向对象的语言,也就是说,在Java程序中所有的事物都是对象。 程序是模拟现实生活,那么把一个一个现实生活中的实体如何描述到程序中,在程序中一个对象就是生活中的一个实体。 对象:在程序中如何描述一个实体:通过实体的特征与行为来描述这个实体。 在Java中我们不能直接描述一个实体,那么如何做呢?。。。。。。。。。 Java中有一个概念:类 类:类是对对象的一种抽象描述,也就是说,类其实就是定义对象的一个模板,在这个模板里面充分描述了对象所具有的属性和行为(方法) 也可以说类是一组具有相同属性与行为的对象的抽象。 对象:通过类具体创建出来的实体,就是对象,这些对象是可以拿来使用的,一个类可以创建出任意个相同的对象(也就是一对多关系)。 所以在我们编写代码时,先要编写类,通过class来创建对象。 创建类的关键词:class package com.xk; /* *作者:吴志龙 *日期:2018年7月25日 */ public class Person { } 类是用来描述实体的。。。。。 通过什么来描述实体 属性(特征)(成员变量) 方法(行为) 来描述 package com.xk; /* *作者:吴志龙 *日期

常用类和异常

时光总嘲笑我的痴心妄想 提交于 2019-11-28 06:23:36
常用类和异常 回顾 1 包装类: byte- Byte short-Short int-Integer long -Long float-Float double-Double char- Character boolean -Boolean Integer 1 如果使用 Integer 创建对象,数据在堆中存放 2 Integer i=100; Integer i2=100;//是同一个对象 ,Integer中有缓冲区 3 装箱 基本类型转成包装类 拆箱 包装类转成基本类型 2 基本类型和字符串之间 2.1基本类型转成字符串 int i=5; String s=i+""; String.valueof(i); 2.2字符串转成基本类型 String s="12"; int i=Integer.parseInt(s); 3 字符串操作 (1)存储常量池中(串池),不允许有重复 (2)不可变性 (3)new String("xxx"); 数据存储在堆中 String s="xxx"; //串池 String s2=new String("xxx");//在堆中 //长度 s.length(); //查找位置 indexOf lastIndexOf //截取 subString(); //追加 concat(); //替换 replace(); //相等比较 equals() //比较

JAVA 面向对象之封装性

妖精的绣舞 提交于 2019-11-28 06:00:04
封装性 封装性在JAVA当中的体现 1.方法就是一种封装 2.关键字 private 也是一种封装 private(私有化)的使用 private String name; private int age; 一旦使用了 private 关键字进行修饰,那么本类当中仍然可以随意访问。 但是! 超出本类范围之外就不能再直接访问了 可以定义一对 Getter/Setter 方法 来进行 间接访问: 对与Getter 来说,不能有参数,返回值类型和成员变量对应 对于Setter来说,不能有返回值,参数类型和成员变量对应 public class Person { String name; private int age; public void setAge(int num){ age = num; } public int getAge(){ return age; } } private 关键字可以提高代码的安全性 this的使用(在重名的情况下起到区分的作用) 当方法的 局部变量和类的成员变量重名的时候 ,根据”就近原则“,有限使用局部变量。 如果需要访问本类当中的成员变量,需要使用格式:this.成员变量名 ”通过谁调用的方法,谁就是this“ 构造方法 构造方法是 专门用来创建对象的方法 ,当我们通过关键字new来创建对象时,其实就是在调用构造方法。 格式: public 类名称