12月28日java SE基础

12月28日java SE基础,第1张

12月28日java SE基础

位运算的含义?位运算就是直接对整数在内存中的二进制位进行 *** 作。将数值转换为2进制,然后再进行与&,或|,非!,异或^运算

与有一个0结果就是0,或有一个1结果即为1,非就是0变1,1变0,异或有一个0一个1才为真

与案例                     
00101                     
11100
(&;或者and)
----------------
00100

或案例
00101
11100
(|或者or)
----------------
11101

异或案例
00101
11100
(^或者xor)
----------------
11001

-------------------------------------------------------------------------------------------------------------------

左移<<与右移符号>>

左移符号规律N进制,左移动M位,右侧补0,相当于变成原数乘以2^M次方

>>右移符号,规律N进制,右移动M位,左侧补符号位,相当于变成原数除以2^M次方
编程语言进行乘法运算内部都是进行位运算,所以运算结果很快
>>>右移,左侧补0

------------------------------------------------------------------------------------------------------------------

运算符优先级见课本p44,注意有括号的情况

------------------------------------------------------------------------------------------------------------------

字符串String,属于引用数据类型

字符串内部核心是char数组,但两者不是同一个内容

String类的substring方法可以从一个较大的字符串提取出一个子串

-----------------------------------------------------------------------------------------------------------------

数组为什么需要提前申请足够大的空间?

因为如果不提前申请空间,不知道该数组的长度是多少,编辑该数组可能会对内存中其他数组产生影响,防止它越界

----------------------------------------------------------------------------------------------------------------

不可变字符串指的是要修改字符串内容,不会在源地址内容进行修改,而是需要新开辟一段内存空间,更改字符串变量的指向,指向新开辟的内存空间的地址,新开辟的内存空间内容就是修改后的内容。

------------------------------------------------------------------------------------------------------------------

面试点!常量

String字符串每次使用可能会有重复的内容,常量池保存大量的字符串,将各种字符串存放在公共的常量池中,字符串变量指向常量池中相应的位置,常量池定期检查没有使用过的字符,定期删除

-----------------------------------------------------------------------------------------------------------------

==的使用?

如果比较的是基本数据类型,比较的是值

如果比较的是一你用数据类型,比较的是地址

equals比较的是值,使用方法a.equals(b)     a和b是变量

---------------------------------------------------------------------------------------------------------------

String a = null和String b = " " 两者有区别

前者是没地址没内容 后者是空数组符号

---------------------------------------------------------------------------------------------------------------

char编码值  码点值就是编码值,每个字母或者汉字有一个编码值

int a = str.length()获取长度.length方法需要记住

char a  = str.chatAt(n) 获取下标位n的那个字符

int a = str.codePointAt(n) 获取下标为n的编码值

int[] arr = str.codePonint().toArray 获取所有编码值,将编码值保存到数组

----------------------------------------------------------------------------------------------------------

String ApI

String转大小写 case意思是转换

.toUpperCase()为转字母为大写

.toLowerCase()为转字母为小写

String replace(CharSequence oldString,CharSequence newString)返回一个新字符串。这个字符串用newString代替原始字符串所有的oldString.可以用String 或StringBuilder对象作为CharSquence参数

String切割  String[] arr = a4.split("下") //用于切割字符串,用数组来接收

-----------------------------------------------------------------------------------------------------------

面试题

字符串拼接

StringBuilder实现原理

页的4kb分类是按照变量来分,buffer内部基本类型数组实现,buffer代表高性能,原先的String不可变,是因为内容多大就申请多大的内存空间,修改需要重新申请,buffer先申请足够大的空间,这样如果修改字符串,可以在原地址进行修改,不会超过 *** 作系统的一个页,节省了空间

-----------------------------------------------------------------------------------------------------------------------

12/28日代码

public class Test2{
    public static void main(String[] args){
         

     
       
              

         

       
       
         
     
    
     
       
     

    
     
    
   
       
     long start = System.currentTimeMillis();
     String str = "";
     StringBuilder  str1 = new StringBuilder();
     for(int i = 0; i < 100000;i++ ){
         //str +=i;
         str1.append(""+i);
     }
      long end = System.currentTimeMillis();
      System.out.println("花费毫秒数: " +(end - start));
     
}
}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zaji/5685097.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-17

发表评论

登录后才能评论

评论列表(0条)

    保存