概述
目录
进制转换
二进制转十进制(N进制转十进制)
十进制转二进制(十进制转N进制)
N进制转M进制
字符串
检测字符串是否相等
String API
构建字符串
参考文献
进制转换
二进制转十进制(N进制转十进制)
以二进制为例
101001110B=1*2^8+0*2^7+1*2^6+0*2^5+0*2^4+1*2^3+1*2^2+1*2^1+0*2^0
对于N进制转十进制的方法是:按权相加法。即把N进制数先写成加权系数展开式,然后再按十进制的加法规则求和,得到对应十进制数。
例如:对于7进制数 645234转换为十进制过程如下
十进制转二进制(十进制转N进制)
模N取余法:(直到商为0)
以二进制为例(模2取余法)
整数部分为从下往上101011001(小数部分为从上往下)
N进制转M进制
(N进制先转十进制,十进制再转M进制)
字符串
字符串用双引号,字符用单引号。
String 类的 substring 方法可以从一个较大的字符串提取出一个子串。
substring 的工作方式有一个优点:容易计算子串的长度。字符串 s.substring(a, b) 的长度
为 b-a。
public class Test{
public static void main(String[] aaa){
String str = "大家好,我是李明,我来自河北省张家口市";
char[] arr1 = {'大','家','好' };
String str2 = "你们也很好";
String str3 = "我们都很好";
String s1 = str.substring(3, 6); //[3,6) 3. 4. 5(前闭后开)截取数组中第4到第六个字符
System.out.println(s1);
}
}
不可变字符串是指不可以在原地址上修改,(数组在内存中物理地址是连续的),如果想要修改,就必须申请新的空间
对于基本类型来说 == 比较的是值,但对于引用类型来说,== 比较的是内存地址是否相等
如果重写equals,一定要重写hashcode()方法。原因是需要配合hashmap使用
检测字符串是否相等
检测字符串值是否相等需要用 a .equals(b) 检测两个字符串是否相等。
一定不要使用 == 运算符检测两个字符串是否相等! 这个运算符只能够确定两个字串
是否放置在同一个位置上。当然, 如果字符串放置在同一个位置上, 它们必然相等。但是,
完全有可能将内容相同的多个字符串的拷贝放置在不同的位置上。
(1)检测是否相等
可以使用 equals 方法检测两个字符串是否相等。对于表达式:
s.equals(t)
如果字符串 s 与字符串 t 相等, 则返回 true ; 否则, 返回 false。
(2)忽略大小写的检测
要想检测两个字符串是否相等,而不区分大小写, 可以使用
equalsIgnoreCase 方法。
"Hello".equalsIgnoreCase("hello")
对于引用类型来说,变量名和变量位置(句柄和值 等号左边叫句柄,右边叫值)一定不在一起(即物理地址不相邻),引用类型的值不断发生变化,大小不固定,所以不能事先给他分配空间。(需要动态分配)。基本类型的值是固定的,可以事先分配。
不可变字符串有一个优点:编译器可以让字符串共享。(采用字符串)
字符串常量池:节省空间,引用相同字符串对应同一个
空串和null串:
空串是一个 Java 对象, 有自己的串长度( 0 ) 和内容(空)
String 变量还可以存放一个特殊的值, 名为 null, 这表示目前没有任何对象与该变量关联
码点和代码单元:
Java 字符串由 char 值序列组成。 char 数据类型是一个采用 UTF-16 编码表示 Unicode 码点的代码单元。大多数的常用 Unicode 字符使用一个代码单元就可以表示,而辅助字符需要一对代码单元表示。
String API
API 给了函数名 规定返回的类型 入参,以及 说明
(都需要背诵)
public class Test{
public static void main(String[] aaa){
String str = "大家好,大家最棒";
char x = str.charAt(6);//用的很多(获取指定位置字符)
//调用 s.charAt(n) 将返回位置 n 的代码单元,n 介于 0 ~ s.length()-l 间。
int x2 = str.codePointAt(0);//获取该点的编码值
System.out.println(x);
}
}
char x = str.charAt(6);//用的很多(获取指定位置字符)
String str2 = str.replace("=" , "#") ; //替换。 表示将str中 = 全部替换为 #
int y = str.length(); //计算字符串的长度
String[] arr = str.split("="); //根据 = 将字符串切割。
//(以下为例子)
String str = "大家=好,大=家=最=棒";
char x = str.charAt(6);
int x2 = str.codePointAt(0);
String str2 = str.replace("=" , "#");
int y = str.length();
String[] arr = str.split("=");
boolean b = str.startsWith("家=");
boolean c = str.equals(str2);
int d = str.indexOf("家=");
int e = str.compareTo(str);
构建字符串
字符串拼接 StringBuilder StringBuffer
采用字符串连接的方式构建字符串效率比较低。每次连接字符串, 都会构建一个新的 String 对象,既耗时, 又浪费空间。使用 StringBuildei•类就可以避免这个问题的发生。
字符串拼接比这两个慢很多。StringBuffer内部原理同StringBuilder一样是,多线程下的安全版本,因为加锁了,所以比StringBuilder稍微慢一丢丢。
三者都可以返回字符串
long start = System.currentTimeMillis();
String a = "";
StringBuilder a2 = new StringBuilder();
for(int i=0;i<10000;i++){
// a+= i;
a2.append(i+"");
}
long end = System.currentTimeMillis();
System.out.println("所消耗时间为:"+(end - start));
以上是StringBuilder和字符串连接构建字符串的步骤,分别运行出来之后可以比较出来当i的值很大的时候,StringBuilder比字符串连接消耗的时间大大减少。
参考文献
java核心卷第十版
最后
以上就是激昂酸奶为你收集整理的Java学习 进制转换 字符串的全部内容,希望文章能够帮你解决Java学习 进制转换 字符串所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复