【无标题】

1.String

1.1概述

java.lang.String:是字符串类,底层就是一个final修饰的char数组,所以String很多特性就是数组的特性,一旦确定,长度不能更改
                  
 1.字符串一旦创建,这个字符串对象不能再更改
 
 2.为了提升字符串的访问和存储效率,java虚拟机采用了一种缓存机制,把字符串都保存在了字符串常量池中
 
 3.在程序执行过程中,假如要用到一个字符串a   String s1="a";先把字符串常量池中检索,是否有a,如果没有就创建一份,假如有了String s2="a";就不在创建,把已有的这个a返回
                 
 所以导致String s1="a"  String s2="a"  此时使用s1==s2,他也是true,因为他们指向同一个字符串对象,就是a

1.2基本使用

String s1="a";
String s2="a";

System.out.println(s1.equals(s2));       比较的值,true
System.out.println(s1==s2);                比较地址,false


如果使用了new的方式,那么会创建堆内存对象,该字符对象会保存在堆内存中
String s3=new String("a");
String s4=new String("a");

 System.out.println(s3==s4);   s3和s4不指向常量池,分别指向了堆内存,地址不同,为false
System.out.println(s3.equals(s4));   String中覆写了equals方法,比较值,所以是true

1.3构造方法

1.字节数组,只截取一部分,4表示起始下标(包含),2表示个数
String s4=new String(bytes,4,2);
System.out.println(s4);

        
2..字符数组,只截取一部分,1表示起始下标(包含),2表示个数
String s6=new String(chars,1,2);
System.out.println(s6);

1.4常用方法

 1 char charAt (int index ) : 返回该字符串中,指定位置的字符

String s1 = "qwehihasd";

 char c1 = s1.charAt(2);

System.out.println(c1);   e

2 boolean endsWith(String suffix) : 判断该字符串是否以指定字符串结尾

  boolean startsWith(String prefix) : 判断该字符串是否以指定字符串开始

System.out.println("Hi.money".endsWith(".money")); 
System.out.println("Hi.money".startsWith("Hi"));

3 boolean equalsIgnoreCase(String str) : 不区分大小写比较两个字符串是否相等

System.out.println("abc".equalsIgnoreCase("ABC"));

4 byte[] getBytes() : 把字符串转换为字节数组并返回

byte[] bytes="abc".getBytes();

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

char[] chars="abc".toCharArray();

6 int indexOf(String str) : 获取该字符串中指定字符串的起始索引,找不到返回-1

System.out.println("aafavbwg".indexOf("fa"));  2
System.out.println("xaafzeaq".indexOf("fa"));  -1

7 int indexOf(String str,int index) :

   从指定位置开始查找(包含),获取该字符串中指定字符串的起始索引,找不到返回-1

System.out.println("acaafaz".indexOf("a",1));  2
System.out.println("acaafaz".indexOf("b",1));  -1

8  index lastIndexOf(String str) : 同上,最后一次出现的索引 找不到返回-1

System.out.println("xafaawd".lastIndexOf("w") System.out.println("xevfgas".lastIndexOf("b"));-1

9  int length() : 返回该字符串的长度

System.out.println("aaxwa".length());  5

10 String replaceAll(String regex . String replacement);   替换指定字符,支持正则表达式

    String replace (String str . String replacement); 不支持正则表达式

System.out.println("adq.afa.aaxve".replaceAll(".",","));  ,,,,  . 在正则表达式中,代表任意字符
 System.out.println("adq.afa.aaxve".replace(".",","));  . 换成了,

可以用/转义

11 String[] split(String regex) : 分割字符串,返回字符串数组,支持正则表达式,注意 点,需要转义

System.out.println("adq.afa.aaxve".replaceAll("\\.",","));
System.out.println("adq.afa.aaxve".replace(".",","));

12 String substring(int begin);获取该字符串中,以某个下标起始的子字符串(包含)

System.out.println("abcdef".substring(2));   cdef

13  String substring(int begin, int end) :  获取该字符串中,以某个下标起始(包含)到某个下标结束的子字符串(不包含)

System.out.println("cjjdnshh".substring(2,4));  jd

14 String trim() : 去除字符串两边的空格

System.out.println("   a  b  fsba   ");
System.out.println("   a  b  fsba   ".trim());

15  String toUpperCase() : 转大写

      String toLowerCase() : 转小写

System.out.println("xavq".toUpperCase());
System.out.println("XAVQ".toLowerCase());

16 static String valueOf(Object obj) :

     调用该对象的toString方法,如果为null,则不再调用toString而是返回字符串null

    打印一个引用类型的时候,会自动调用String的valueOf 所以 会自动调用toString方法

1.5注意

【无标题】

2.StringBuffer和StringBuilder

2.1概述

StringBuffer和StringBuilder:都是字符串缓冲区,可以做拼接操作 

StringBuffer和StringBuilder和String区别:

String:底层是char数组,定长,一旦创建,不可更改,不适合做字符串拼接操作
StringBuffer和StringBuilder:底层是char数组,变长,预先在内存中申请一块空间,用来保存很多字符

如果预留空间不够了,会进行自动扩容
默认容量为16,扩大容量   (当前容量+1)*2   16->34->70

StringBuffer和StringBuilder的区别:StringBuffer线程安全,在多线程环境下,不会出现问题
                                                         StringBuilder非线程安全,在多线程环境下,可能会出现问题

2.2基本使用

append 添加数据,做拼接操作

StringBuilder sb=new StringBuilder();
        String[] arr={"a","b","c"};
        for(int i=0;i<arr.length;i++){
            sb.append(arr[i]).append(",");

反转
 sb.reverse();
 

 获取已有元素个数
System.out.println(sb.length());
 

当前容量(数组长度)
System.out.println(sb.capacity());
 

toString可以把StringBuilder转换为String类型
String str=sb.toString();
System.out.println(str);

3.包装类

3.1概述

1. 装箱就是自动将基本数据类型转换为包装器类型 

2. 拆箱就是自动将包装器类型转换为基本数据类型

【无标题】

3.2使用

基本类型
        byte b1=12;
 封装为包装类
        Byte b2=new Byte(b1);
        m1(b2);

public static void m1(Object o){}

3.3Integer

3.3.1基本使用

【无标题】

3.3.2相互转换

int-->Integer
Integer i1=new Integer(123);
 i1=Integer.valueOf(123);
        
Integer-->int
int i2=i1.intValue();
        
String-->integer
Integer i3=new Integer("123");
 i3=Integer.valueOf("123");
        
 Integer-->String
 String string=i3.toString();
        
  int-->String
  String string1="123+";
        
 String-->int
 重要  static int parseInt(String str):把纯数字的字符串转换为int类型
 int i4=Integer.parseInt("123");
 double d1=Double.parseDouble("2.4");

 

3.3.3常用方法
把数字以二进制的字符串形式,并返回
String s1=Integer.toBinaryString(10);
八进制返回
 s1=Integer.toOctalString(10);
十六进制返回
s1=Integer.toHexString(10);

3.3.4自动装箱自动拆箱

java1.5新特性  自动装箱和自动拆箱
               装箱:基本类型到包装类类型
               拆箱:包装类类型到基本类型
 
 八种包装类,都覆写了toString和equals()方法

1.5之前

Integer i1=Integer.valueOf(123);
int i2=i1.intValue();

1.5之后

Integer i3=123;     编译之后就等于 Integer i1=Integer.valueOf(123);
int i4=i3;                编译之后就等于int i4=i3.intValue();

3.3.5深入整型常量

Integer i5=12;
Integer i6=12;      编译之后Integer.valueOf(12);
 System.out.println(i5 == i6);   true   在-128~127都为true,范围外为相当于new新建对象,false

4. System

4.1概述

System类提供的public static long currentTimeMillis()用来返回当前时 间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。

此方法适于计算时间差。

System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。 该类位于java.lang包。

由于该类的构造器是private的,所以无法创建该类的对象,也就是无法实 例化该类。其内部的成员变量和成员方法都是static的,所以也可以很方便 的进行调用。

成员变量

System类内部包含in、out和err三个成员变量,分别代表标准输入流

(键盘输入),标准输出流(显示器)和标准错误输出流(显示器)。

成员方法

native long currentTimeMillis():

该方法的作用是返回当前的计算机时间,时间的表达格式为当前计算机时

间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数。

void exit(int status):

该方法的作用是退出程序。其中status的值为0代表正常退出,非零代表

异常退出。使用该方法可以在图形界面编程中实现程序的退出功能等。

4.2常用方法

【无标题】

 5.Date

5.1概述

获取时间和时间操作

5.2构造方法

获取系统当前时间
Date d1=new Date();

 

传入毫秒数,获取时间原点到指定毫秒数的世界
Date d2=new Date(1000);

 

Sat Jan 15 13:10:02 CST 2022
System.out.println(d1);
 

Thu Jan 01 08:00:01 CST 1970
System.out.println(d2);

5.3常用方法

1642229103105
System.out.println(d1.getTime());

 

Sat Jan 15 14:45:24 CST 2022
System.out.println(d1.toString());

5.4 格式化

传入毫秒数,获取时间原点到指定毫秒数的世界
Date d2=new Date(1000);

获取指定时间毫秒数

System.out.println(d1.getTime());

获取系统当前时间
 Date d1=new Date();

创建时间格式化对象
 SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日  HH:mm:ss SSS");
格式化,返回字符串
String string=sdf.format(d1);
System.out.println(string);   2022年01月16日  10:43:11 603

时间格式的字符串转换为Date对象
String strDate="2022/01/14  14:21:36";
格式化对象的时间格式要和字符串的格式一致
sdf=new SimpleDateFormat("yyyy/MM/dd  HH:mm:ss");
转换   返回Date对象
Date date=sdf.parse(strDate);
System.out.println(date);

5.5Calendar

【无标题】

 6.Random

6.1使用

【无标题】

 

上一篇:Java流程控制


下一篇:shiro session超时