这篇博客总结了1天整,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用.

**转载请注明 出自 : luogg的博客园 ** ,

设计模式

在长期开发过程中,为了解决某些固定问题, 总结出的固定套路.

目前为止, java中的设计模式有23种, 例如: 单例模式, 适配器模式, 工厂模式, 代理模式 ...

单例设计模式

1, 正常情况下, 一个类可以创建多个对象, 但会对内存负担, 采用单例设计模式是通过一个类, 创建一个对象, 不管外界对该类使用多少次, 使用的对象只有一个, 很大程度上减少了对内存的负担.

2, 构造方法私有化, 外界不可以通过new关键字再创建对象

类内部创建一个对象,和带有返回对象的instance方法,用static修饰

输出结果: true

适配模式

1, 一个类要实现一个借口或者继承一个类的时候, 需要复写他们的全部方法, 多数情况下, 子类用不到全部方法, 那么, 再子类和抽象类或者借口之间添加一个中介"适配器" , 子类就可以按照自己的需求来复写方法了, 不需要全部复写了.

2, adapter类实现接口或者继承抽象类, 然后重写所有的抽象方法, 子类继承apapter类, 复写自己所需方法即可 .子类中不可以写main方法

初始API

api又叫坐"类库",

API中常用包

Object类

1, Object类是java中所有类的公共父类, 一个类只要没有明显的继承一个类, 那么肯定是Object类的子类.

例如:class Person extends Object{} 和 class Person{} 完全一样

String类

String 两种实例化方式的区别:

方式一:String str = new String(“”);

方式二:String str = "";

方式一会在内存中开辟新的空间

方式二只要声明字符串内容相同, 就不会开辟空间, 字符串池中, 方式二声明好.

String类中常用的方法:

  • toCharArray();将此字符串转换为一个新的字符数组,返回char[]
  • charAt(int index) ; 返回指定索引处的 char 值,返回值char,默认从0开始
  • getBytes() ;使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。返回值byte[]
  • indexOf(String str/char ch) ;返回指定字符在此字符串中第一次出现处的索引。返回值int,默认从0开始计数
  • indexOf(String str/char ch, int fromIndex) ; 回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。返回值int,也是默认从0开始,fromIndex之后找不到则报错,或者返回负数
  • isEmpty(); 当且仅当 length() 为 0 时返回 true。返回值boolean
  • equals();将此字符串与指定的对象比较。返回值boolean
  • concat();将指定字符串连接到此字符串的结尾。返回值String
  • conpareTo();按字典顺序比较两个字符串。返回值int
  • toString();返回此对象本身(它已经是一个字符串!)。返回值String
  • lastIndexof(char ch/String str)返回指定字符在此字符串中最后一次出现处的索引。返回值int,若String中相同的字符,则返回最后出现的位置
  • lastIndexOf(int ch/String str, int fromIndex) ; 返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。返回值int,反向搜索, 从最后一个开始
  • length() ;回此字符串的长度。返回值int
  • replace(char oldChar, char newChar) ; 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。返回值String,局部替换
  • replaceAll(String regex, String replacement) ; 替换全部,返回值String
  • split(String regex) ;根据给定正则表达式的匹配拆分此字符串。
  • split(String regex, int limit) ;
  • startsWith(String prefix) ;测试此字符串是否以指定的前缀开始。返回值boolean
  • startsWith(String prefix, int toffset) ;测试此字符串从指定索引开始的子字符串是否以指定前缀开始。
  • substring(int beginIndex) ;截断, 返回一个新的字符串,它是此字符串的一个子字符串。返回值String
  • substring(int beginIndex, int endIndex) ;
  • toLowerCase() ;将此 String 中的所有字符都转换为小写。返回值String
  • toUpperCase() ; 将此 String 中的所有字符都转换为大写。返回值String
  • trim() ;返回字符串的副本,忽略前导空白和尾部空白。
  • valueOf(boolean b/char ch/double/float/int...) ;返回 boolean 参数的字符串表示形式。返回值都是String

StringBuffer类

String类中的字符串内容不可以改变, 若要面对一个字符串经常被改变时, 使用String ,会产生大量数据垃圾(匿名对象) ,

StringBuffer 类的常用方法

  • append(boolean/char/char[]/double/float/int/long/String); j将制定格式字段追加到此序列(追加就是在最后边添加)
  • delete(int start, int end);移除此序列的子字符串中的字符。从0开始计数 , 返回值StringBuffer
  • insert(int offset, boolean/str/char/char[]/int/double/....);将 boolean 参数的字符串表示形式插入此序列中。返回值StringBuffer
  • capacity(); 返回当前容量。容量指可用于最新插入的字符的存储量,超过这一容量就需要再次进行分配。返回值int
  • deleteCharAt(int index);移除此序列指定位置的 char。每次只能删除一个字符 , 返回值StringBuffer
  • toString(); 返回此序列中数据的字符串表示形式。返回值String
  • length();返回长度(字符数)。返回值int
  • replace(int start, int end, String str)使用给定 String 中的字符替换此序列的子字符串中的字符。
  • reverse();字符串反转
  • setLength(int newLength);设置字符序列的长度。

System类

System 类提供了一些与系统相关的属性和方法,System 类中的属性和方法都是静态属性,所以在调用属性和方法的时候直接通过类名调用就可以

常用属性

  • System.err : 标准”错误输出流。
  • System.out: 标准”输入流。
  • System.in: “标准”输出流。

常用方法

  • System.exit() 终止当前正在运行的 Java 虚拟机。
  • System .gc() : 运行垃圾回收机制,
  • currentTimeMillis(); 返回以毫秒为单位的当前时间。
  • getProperties();确定当前的系统属性。
  • 补充: finalize():在对象回收之前做的事情,这个方法是 Object 类中的

Math类

Math 类是数学操作类。这个类中提供的是一系列的数学操作方法,比如:求绝对值、平均值,四舍五入……

常用方法:

aqs(int/double/....)绝对值

cbrt();立方根

max(int,int/double,double);返回两个数中最大的一个

min();

pow(double a, double b) 返回第一个参数的第二个参数次幂的值。

日期类

Date类(很多构造方法和普通方法都已过时)

可以获取到系统当前时间, Date d = new Date(); 但是格式不好看

Calendar类

字段:

  • YEAR: 指示年的 get 和 set 的字段数字。
  • WEEK_OF_YEAR :get 和 set 的字段数字,指示当前年中的星期数。
  • WEEK_OF_MONTH :get 和 set 的字段数字,指示当前月中的星期数。
  • MONTH : 指示月份的 get 和 set 的字段数字。月得+1,西方和我们的差异
  • DAY_OF_MONTH : get 和 set 的字段数字,指示一个月中的某天。

方法:

getTime() : 返回一个表示此 Calendar 时间值

getTimeInMillis() : 返回此 Calendar 的时间值,以毫秒为单位。

getInstance() : 使用默认时区和语言环境获得一个日历。

Calendar 类可以将时间精确到毫秒,但本身是个抽象类,要想创建 Calendar 类的对象,

有两种办法: 依靠多态性,创建子类(GregorianCalendar)的对象实例,使用自身的静态方法 getInstance() 方法创建对象

DateFormat类

为了将日期变为符合中国人的习惯,使用 DateFormat 类.

DateFormat也是抽象类, 创建对象的两种方式:使用自身的 getDateInstance();

依靠多态性,通过自己的子类 SimpleDateFormat

方法

format(Date date) : 将一个 Date 格式化为日期/时间字符串。

public class DateFormatTest {

	public static void main(String[] args) {

		DateFormat datef1 = new SimpleDateFormat();

		DateFormat datef2 = DateFormat.getDateTimeInstance();

		System.out.println(datef2.format(new Date()));
}
}

SimpleDateFormat类

Random类

Random 类是随机值数产生类

Scanner类

文本扫描器

luogg_java学习_08_设计模式_API的更多相关文章

  1. [学习笔记]设计模式之Builder

    写在前面 为方便读者,本文已添加至索引: 设计模式 学习笔记索引 作为一个新入职的魔导士呢,哦不,是程序员,我以为并没有太多机会去设计项目的软件架构.但是,工作一段时间之后,自己渐渐意识到,哪怕是自己 ...

  2. 学习java设计模式有用吗?懂这六个原则,编程更轻松

    学习java设计模式有用吗?懂这六个原则,编程更轻松 1.开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭.在程序需要进行拓展的时候,不能去修改原有的代码,实 ...

  3. iOS学习之设计模式

    iOS开发学习中,经常弄不清楚ios的开发模式,今天我们就来进行简单的总结和探讨~ (一)代理模式 应用场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现. 优势:解耦合 敏捷 ...

  4. JavaScript的学习--JavaScript设计模式的总结

    这篇博客只是自己对设计模式的理解的备忘~ 看完了<JavaScript设计模式>这本书,一直没有写博客记录一下,最近抽出时间来重读了一下,就顺便记录一下~ 如果你只是想粗略了解一下Java ...

  5. 学习Java设计模式的10条建议

    设计模式在整个Java的学习路线图中扮演着承上启下的作用. 在整个软件生命周期中,唯一不变的就是变化.设计模式就是要在软件设计.编码中对现有问题的一种总结,并从中寻求应对变化的策略. 自己初次接触设计 ...

  6. [学习笔记]设计模式之Abstract Factory

    写在前面 为方便读者,本文已添加至索引: 设计模式 学习笔记索引 在上篇笔记Builder设计模式中,时の魔导士祭出了自己的WorldCreator.尽管它因此能创造出一个有山有树有房子的世界,但是白 ...

  7. [学习笔记]设计模式之Adapter

    写在前面 为方便读者,本文已添加至索引: 设计模式 学习笔记索引 Adapter(适配器)模式主要解决接口不匹配的问题.为此,让我们要回到最初Builder模式创建平行世界时,白雪公主和小霍比特人的谜 ...

  8. [学习笔记]设计模式之Bridge

    写在前面 为方便读者,本文已添加至索引: 设计模式 学习笔记索引 “魔镜啊魔镜,谁是这个世界上最美丽的人?”月光中,一个低沉的声音回荡在女王的卧室.“是美丽的白雪公主,她正和小霍比特人们幸福快乐地生活 ...

  9. [学习笔记]设计模式之Prototype

    写在前面 为方便读者,本文已添加至索引: 设计模式 学习笔记索引 在笔记Builder模式中,我们曾见到了最初用于创建平行世界的函数createWorld,并且它是Mage类的成员函数(毕竟是专属于魔 ...

随机推荐

  1. C++的性能C#的产能?! - .Net Native 系列《一》:.NET Native安装和配置

    之前一文<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATIVE初窥> 获得很多朋友支持和鼓励,也更让我坚定做这项技术的推广者,希望能让更多的朋友了解这项技术,于是先从官方 ...

  2. 在C#代码中应用Log4Net(四)在Winform和Web中捕获全局异常

    毕竟人不是神,谁写的程序都会有bug,有了bug不可怕,可怕的是出错了,你却不知道错误在哪里.所以我们需要将应用程序中抛出的所有异常都记录起来,不然出了错,找问题就能要了你的命.下面我们主要讨论的是如 ...

  3. 备忘-Sql server Timeout expired 超时时间已到. 达到了最大池大小 错误及Max Pool Size设置

    select * from sysprocesses where dbid= db_id('数据库名') 通过此语句可查看目前所有的连接进程 不够了就必须设置Max Pool Size,理论最大值为3 ...

  4. Module Zero之权限管理

    返回<Module Zero学习目录> 概览介绍 角色权限 用户权限 概览介绍 Module-Zero实现了ABP授权系统的IPermissionChecker接口.这篇文章中,我们将会看 ...

  5. padding标准盒模型和怪异盒子模型

    我们都知道padding是为块级元素设置内边距 但是在使用过程中,我们却会遇到一些问题.padding的标准盒模型和怪异盒模型 padding盒子模型 我们通过demo来讲这个问题,用文字干讲第一没意 ...

  6. 使用JavaMail创建邮件发送邮件

    一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封简单的邮件包含邮件头和邮件体两个部分,邮件头和邮件体之间使用空行分隔. 邮件头包含的内容有: from字段 ...

  7. CentOS6编译安装PHP7+Nginx

    本文属于动手搭建PHP开发环境的一部分,更多点击链接查看. 本文以centos6为例. 安装PHP 下载 http://cn2.php.net/distributions/php-5.6.22.tar ...

  8. G2 2.0 更灵活、更强大、更完备的可视化引擎!

    概述 G2作为一款技术产品,自诞生以来,服务于广大的Web工程师群体和一部分数据分析师.一直来,G2 因其易用的语法和扎实的可视化理论基础,广受使用者好评.G2 1.x 的可视化能力已经非常强大,使用 ...

  9. PDMS RvmTranslator

    PDMS RvmTranslator eryar@163.com Abstract. AVEVA Review is used for 3D model visualisation for plant ...

  10. 深入理解javascript中的富文本编辑

    前面的话 一说起富文本,人们第一印象就是像使用word一样,在网页上操作文档.实际上差不多就是这样.富文本编辑,又称为WYSIWYG (What You See Is What You Get所见即所 ...