
位运算的含义?位运算就是直接对整数在内存中的二进制位进行 *** 作。将数值转换为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));
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)