资讯详情

20_星仔带你学Java之Java常用类

大家好,我是星仔。一个致力于与你分享各种东西的人。Java博主知识。

?专栏汇总?

??星仔带你部署银河麒麟RAM架构服务器

??《星仔带你学消息队列(RebbitMQ)》

??星仔带你学习Java》

??星仔带你学习Elasticsearch》

??星仔带你去做Java开发小技巧

??星仔带你学习Java设计模式》

??《星仔带你搞定【软考-系统架构设计师】》

??星仔带你去玩Java面试》

本博客收录在《华星详谈-学习中心》中。本研究中心收集Java整个技术体系的所有技术要点。面试题附在每个博客的背面或知识点的结尾,以巩固本章的内容。

能够系统地以系统地掌握Java由技术体系建立的学习中心。星仔正在努力更新学习中心的内容。希望大家分享!

??一、字符串操作

??1.1 字符串概述

按一定顺序排列多个字符。

串联多个字符()。

??

1)不可变字符串:创建当前对象后,对象的内容()不能改变,一旦内容发生变化,就是一个新的对象。

2)可变字符串:对象创建完毕后,可以改变对象的内容,当内容发生变化时,对象保持不变。

String str = “ABCDEFG”; //定义字符串对象,

char[] cs = new char[]{'A','B','C','D','E','F','G'};

??1.3String 类

表示不可变字符串。创建当前对象后,对象的内容()不能改变,一旦内容发生变化,就是一个新的对象。

1)直接赋予字面量: String&bsp;  str1  =  “”;

       2)通过构造器创建:          String   str2  =  new String(“”);

?

       1)表示引用为空(null):   String  str 1 = null;      没有初始化,没有分配内存空间.  

       2)内容为空字符串:        String  str2  = “”;         以及初始化,分配内存空间,不过没有内容.

        1)引用不能为空(null);

        2)字符内容不能为空字符串();

:          只能比较引用的内存地址是否相同。

        :   在Object类中和”==”号相同,建议子类覆盖equals方法去比较自己的内容

注意:

🍒

     编译常量池:  把字节码加载斤JVM的时候,存储的是字节码的相关信息。

     运行常量池:  存储常量数据。

下列代码分别创建了几个String对象.

String   str1  =  “”; 

String   str2  =  new String(“”);

 答:

①、String   str1  =  “”; 最多创建一个String对象,最少不创建String对象。如果常量池中已经存在”ABCD”,那么str1直接引用,此时不创建String对象。否则先在常量池先创建”ABCD”内存空间,再引用。

②、String   str2  =  new String(“”); 最多创建两个String对象,至少创建一个String对象。new关键字绝对会在堆空间创建内存区域,所以至少创建一个String个对象。

说说下面String对象,彼此之间是否相等

 答:

🍒

        1)单独使用""引号创建的字符串都是直接量,编译期就已经确定存储到常量池中;

        2)使用new String("")创建的对象会存储到堆内存中,是运行期才创建;

        3)使用只包含直接量的字符串连接符如"aa" + "bb"创建的也是直接量编译期就能确定,已经确定存储到常量池中(str2和str3);

        4)使用包含String直接量(无final修饰符)的字符串表达式(如"aa" + s1)创建的对象是运行期才创建的,存储在堆中;通过变量/调用方法去连接字符串,都只能在运行时期才能确定变量的值和方法的返回值,不存在编译优化操作。

🍒

  byte[] getBytes():把字符串转换为byte数组

  char[] toCharArray():把字符串转换为char数组

  String(byte[] bytes):把byte数组转换为字符串

  String(char[] value):把char数组转换为字符串

  int length() 返回此字符串的长度

  char charAt(int index) 返回指定索引处的 char 值

  int indexOf(String str)返回指定子字符串在此字符串中第一次出现处的索引。

  int lastIndexOf(String str)返回指定子字符串在此字符串中最右边出现处的索引

1.6.3 

  boolean equals(Object anObject) 将此字符串与指定的对象比较。

  boolean equalsIgnoreCase(String anotherString) 将此 String 与另一个 String 比较,不考虑大小写

  boolean contentEquals(CharSequence cs) 将此字符串与指定的 CharSequence 比较

 1.6.4 字符串大小写转换

  String toUpperCase()  把当前字符串转换为大写(谁调用该方法,谁就是当前字符)

  String toLowerCase()  把当前字符串转换为小写

🍒1.7  

:

String做字符串拼接的时候,性能极低(耗时),原因是Sting是不可变的,每次内容改变都会在内存中创建新的对象.

String耗时:1964ms

StringBuffer耗时:3ms

StringBuilder耗时:1ms

结论:以后拼接字符串,统统使用StringBuffer/StringBuilder,不要使用String.

🍒1.8 

        StringBuffer和StringBuilder都表示可变的字符串,功能方法都是相同的。

        StringBuffer中的方法都,表示同步的,在多线程并发的时候可以保证线程安全,但在

StringBuilder中的方法都是线程不安全的,但是性能较高。

🍒1.9 StringBuilder 无参构造器

使用StringBuilder无参数的构造器在底层创建了一个长度为16的char数组

    char[] value   = new  char[];

        此时该数组只能存储16个字符,如果超过了就得自动扩容(创建长度更大的数组,再把之前的数组拷贝到新数组)。 此时性能极低,一般的我们事先知道大概需要存储多少字符,在构造器中就应该设置好。如下

//创建一个长度为80的char数组.

new StringBuilder(80);

🍒1.10 StringBuilder/StringBuffer

append(Object val):表示追加任意类型数据

StringBuilder deleteCharAt(int index):删除字符串中,指定位置的字符

🍋二、随机数

:随机地生成的任意的一个数(理论上讲具有不可预知性)。

Random类

ThreadLocalRandom类

UUID类

Random类用于生产一个随机数(通过相同的种子,产生的随机数是相同的)。

public Random():使用默认的种子(以当前系统时间作为种子)。

public Random(long seed):根据指定的种子。

Random是Java7新增类,是Random类的子类,在多线程并发情况下,ThreadLocalRandom相对于Random可以减少多线程资源竞争,保证了线程的安全性。

因为构造器是默认访问权限,只能在java.util包中创建对象。故提供了一个方法ThreadLocalRandom.current()用于返回当前类对象。

UUID通用惟一识别:Universally Unique Identifier; 在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。UUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成UUID。

我们一般用来表示:

🍋三、日期类

Date类: ,不是java.sql.Date.  类 Date 表示特定的瞬间,精确到毫秒.

DateFormat/SimpleDateFormat类:

Calendar类:

。Date类中的大量方法都已经过时了(过时不代表不存在),依然可以使用,只不过不建议使用,

🍒

DateFormat:可以完成日期的格式化操作.

格式化(format):Date类型对象------->String类型:String format(Date date)

解析(parse):String类型时间------>Date类型:Date parse(String source) 

DateFormar转换的格式是固定的,我想根据自己的风格来做转换。比如说自定义格式:2016-04-16  15:50:48,或者2016/04/16  15:50:48。这个时候就需要用到了。支持自定义格式模式。 

🍒

是抽象类,表示日历,比Date更强大。

:

Calendar c = Calendar.getInstance();

int get(int field) 返回给定日历字段(年,月,日,时,分,秒)的值。

🍒3.3 

🍒

需求:查询......的信息,如何表示

🍋四、正则表达式

主要用于(、分割操作、替换操作、网络爬虫(Lucene))

 

 

标签: 连接器ms3126f14

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台