Java第一阶段API

第一天

一、String:字符串类型
  --java.lang.String使用final修饰,不能被继承
  --字符串底层封装了字符数组以及针对字符数组的操作算法
  --java字符串在内存中采用Unicode编码方式,任何一个字符对应两个字节的编码
  --字符串一旦创建,对象内容永远无法改变,但字符串引用可以重新赋值
二、常量池:
  --java对字符串有一个优化的措施:字符串常量池(堆中)
  --java推荐我们使用字面量/直接量(字符串变量的拼接不算)的方式创建字符串,并且会缓存所有以字面量形式创建的字符串对象,当使用相同字面量再次创建字符串时会重用对象以减少内存开销,避免内存中堆积大量内容相同的字符串对象.

三、String常用方法(8个):

  • length():

  • /**
     * public int length()
     * length()方法:可以获取字符串的长度(字符个数)
     */
    
  • trim():

  • /**
     * public String trim():
     * 去除当前字符串两边的空白字符
     */
  • indexOf():

  • /**
     * public int indexOf(String str)
     * 检索给定字符串在当前字符串的起始位置,找不到就返回-1
     * public int indexOf(String str,int fromindex)
     * 重载可以从指定位置开始检索第一次出现指定字符串的位置
     * public int lastIndexOf(String str)
     * 检索给定字符串在当前字符串的最后一次出现的位置,找不到就返回-1
     */
  • substring():

  • /**
     * public String substring(int start, int end)
     * 截取当前字符串中指定范围内的字符串-------包含start,但不包含end
     * public String substring(int start)
     * 截取当前字符串中指定范围内的字符串-------从start开始到末尾
     */
  • charAt():

  • /**
     * public char charAt(int index)
     * 返回当前字符串指定位置的字符
     */
  • startsWith()和endsWith()

  • /**
     * public boolean startsWith(String str)
     * 判断当前字符串是否以给定的字符串开始的
     * public boolean endsWith(String str)
     * 判断当前字符串是否以给定的字符串结束的
     */
  • toUpperCase()和toLowerCase()

  • /**
     * public String toUpperCase()
     * 将当前字符串中的英文部分转为全大写
     * public String toLowerCase()
     * 将当前字符串中的英文部分转为全小写
     */
  • valueOf():静态方法

  • 对比:字符串拼接与valueOf()对比(下一天讲)

  • /**
     * public static String valueOf(数据变量 a)
     * 将其他数据类型转换为String
     */



第二天

一、StringBuilder用于提升String字符串的连接性

        1.简单理解:StringBuilder连接性能好(面试题)

        2.方法:

        1)append():追加,在StringBuilder的后面添加字符,当容量满了,会自动扩容,

                扩容规则:1倍+2

        2)insert(位置,字符):插入字符

        3)delete(开始位置,结束位置):删除字符,删除一定范围内的字符包含开始,不包含结束

        4)toString()方法可以将StringBuilder转换为String

        3.StringBuilder的API返回的大多是当前对象,可以连续使用.调用方法

StringBuilder buf = new StringBuilder();
           buf.append("A")
                .append("A")
                .append("A")
                .append("B")
                .insert(1,"C")
                .delete(2,4);

        4.==是判断地址是否相等,euqals()是判断内容是否相等 

二、正则表达式:用于检测、测试字符串规则的表达式

1.经常用于检测字符串是否符合特定的规则,在网站上经常用于检查用户输入数据是否规范

        ·检测用户名是否为8~10的数字、英文(大小写)

        ·检测电话号码是否符合规则

        ·检测邮箱地址是否符合规则等

2.boolean matches(正则):检测当前字符串是否符合正则规则

三、字符集:匹配一个有效的字符范围

1.语法:

[123456]

2.意义:

1)匹配一个字符

2)其有效范围:1 2 3 4 5 6中的某一个

四、字符范围

1.规则:

1)匹配0~9一个字符:[0-9]或者\d

2)匹配A~Z一个字符:[A-Z]

3)匹配a~z一个字符:[a-z]

4)匹配a~zA~Z一个字符:[a-zA-Z]或者\

5)匹配一个单词字符:[a-zA-Z0-9_]或者\w

6)匹配一个空白字符:/s

规则正则预定义字符集例子
匹配A~Z一个字符[A-Z]
匹配a~z一个字符[a-z]
匹配a~zA~Z一个字符[a-zA-Z]
匹配0~9一个字符[0-9]\dHello\d
匹配一个单词字符[a-zA-Z0-9_]\wA\w
匹配一个空白字符\sHello\sWorld
匹配任意一个字符.

A.

匹配一个非数字\D
匹配一个单词\W
匹配一个非空白\S

 五、数量词:约定左侧元素出现的次数

如:\w{6}

1.语法:

1)x{n} 规定左侧x出现n次

2)x{n,m} 规定左侧x最少出现n次,最多出现m次

3)x{0,n} 规定左侧x最多出现n次

4)x{n,} 规定左侧x最少n次

六、简写数量词

1. X? 和 X{0,1}等价 X可以没有或者有一个

2. X+ 和 X{1,}等价 X至少有一个

3. X* 和 X{0,}等价 X至少有0个

七、特殊字符转义

如何匹配字符[ ] ? + * .,使用 \ 特殊字符进行转义

八、分组:将一组规则作为整体进行处理

"\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"可以写成
"(\\d{1,3}\\.){3}\\d{1,3}"

九、java正则API

1.matches 检查字符串是否整体符合正则表达式规则

2.split 劈开(重要)

1)将一个字符串劈开为几个子字符串:

        "192.168.5.140"劈开为"192""168"5""140"

        "1,Cabbage,110,cabbage@csdn.net"劈开为"1","Cabbage","110","Cabbage@csdn.net"

2)使用:
        2.1)str存储的是要被劈开的字符串

        2.2)正则 用于匹配劈开的位置点,如:,或者  \.

        2.3)返回值 是劈开以后的数组,每个元素是劈开的子字符串

        String arr[] = str.split(正则);

3.replaceAll 全部替换

        将正则表达式匹配到的字符串,都替换为新的字符串

十、Object

十一、包装类



第三天

一、什么是2进制:为什么计算机用二进制(成本优势明显)

        1.逢2进1的计数规则

        2.数字:0 1

        3.权:128 64 32 16 8 4 2

        4.基数:2

        5.写法:数字前加0b且可以在数字中加下划线,不影响数值

PS:利用ValueOf将底层的2进制转换成人能看懂的10进制和文字

       Integer.toBinaryString(n) 将整数n在内存中2进制情况显示出来

二、什么是16进制

        1.逢16进1的计数规则

        2.数字: 0 1 2 3 4 5 6 7 8 9 a b c d e f 

        3.权: 4096 256 16 1

        4.基数: 16(是2进制的基数的4次方),2进制每4位数可以缩写为1个16进制数.

        5.16进制缩写2进制:(数字前加0x为16进制)

        从2进制最低位开始,每4位缩写为1位16进制数

三、补码

1.计算中一种表示有符号数编码,其核心思想就是固定位数2进制分一半作为负数。

2.如何将固定位数2进制分一半作为负数

        1)以4位2进制数讲解如何设计补码

        2)计算时候保持4位不变,多余位自动溢出

        3)最高位为符号位,0是正数,1是负数

        4)补码的对称互补现象 -n = ~n + 1

四、2进制运算

运算符号:

1.~ 取反运算

2.& 与运算

        1)运算规则:逻辑乘法

        0&0 -> 0

        0&1 -> 0

        1&0 -> 0

        1&1 ->1

        2)运算时将两个2进制数对其位,对应位置与运算

n   = 00010111 10011101 01011101 10011110
m   = 00000000 00000000 00000000 11111111
k=n&m 00000000 00000000 00000000 10011110 

        如上运算的意义:k中存储的是n的最后8位数,如上运算叫做掩码(mask)运算.m成为掩码

3.| 或运算

        1)运算规则:逻辑加法,有1则1

        0&0 -> 0

        0&1 -> 1

        1&0 -> 1

        1&1 ->1

        2)运算时将两个2进制数对其位,对应位置或运算

n     = 00000000 00000000 00000000 11011101
m     = 00000000 00000000 10011101 00000000
k=n|m   00000000 00000000 10011101 11011101 

        上述计算的意义:两错位数合并

4.>>>右移位运算(一般移动8位,然后与掩码一起使用)

        1)运算规则,将2进制数整体向右移动,低位自动溢出舍弃,高位补0

n       = 01100111 11010111 10001111 01101101
m=n>>>1   001100111 11010111 10001111 0110110
k=n>>>2   0001100111 11010111 10001111 011011
g=n>>>8   00000000 01100111 11010111 10001111

5.<<左移位运算(没有数学左移位)

        1)2进制数字整体向左移动,高位自动溢出,低位补0

6.>>数学右移位运算

        >>>与>>的区别

       1) >>>逻辑右移位:数字向右移动,低位自动溢出,高位补0,结果没有数学意义.如果仅仅将数位向右移动,不考虑数学意义,则使用>>>

        2)>>数学右移位:数字向右移动,低位自动溢出,正数高位补0,负数高位补1,移动一次数学除以2,小方向取整.如果是替代数学/2,使用数学右移位>>.

       

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值