相关类以及常用方法

1、system(系统相关类)

常用方法:

a)       : system.arraycopy(制定数组,开始复制的位置,目标数组,开始粘贴的位置,需要复制的长度)

将指定源数组中的数组从指定位置复制到目标数组的指定位置。

a)       :System.currentTimeMIllis返回当前时间(以毫秒为单位)。

该方法返回值类型为long 所以调用结果用long类型变量接收。

b)       System.exitint status)终止当前最正在运行的Java虚拟机,参数作状态码,按照惯例非0表示异常终止。

2、(数学相关类)

. Math

a)       MathMath类包含执行基本数字运算的方法,如基本指数,对数,平方根和三角函数。

随机数生成: double random();返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。需要生成随机数的范围0-X,便在随机数后面*X然后进行强制转换.

b)       BigDecimalfloat/double都不能表示精确的小数,此时使用BigDecimal,用于处理经前和精度要求较高的数据。

c)       BigInteger表示大整数,如果两个long类型的足大指运算,结果long储存不下,此时使用BigInteger,一般不用。(因为long的数据范围已经够大了)

加减乘除方法和bigdecimal相同。

. Random

 

随机数生成: nextInt(int n) 返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值

 

3、字符串相关类

字符串的分类:

不可变的字符串:(String)当对象创建完毕之后,该对象的内容是不可改变的。一旦内容改变就是一个新的对象。

可变的字符串:(StringBuilder/StringBuffer),当对象创建完毕之后,该对象的内容发生改变的时候,对象保持不变。

一、String类:不可变的字符串。内容改变后相对应的内存地址也改变了。所以就相当于一个新的对象。

常量池:抓们储存常量的地方,都指的方法区中。

编译常量池:把字节码加载进JVM的时候,储存的是字节码的相关信息。

运行常量池:储存常量数据(研究)。

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

面试题:

1、下列代码中分别创建了几个String对象

String  str   =  “asdf”;     

最多创建一个String对象,最少不创建String对象

如果在常量池中已经存在“asdf”,那么str直接引用,此时不创建String对象。

否则,现在常量池创建“asdf”内存空间,在引用。

String  str1  =  new  String(“asdf”);

最多创建两个String对象,至少创建一个string对象。

New关键字:绝对会在堆空间创建内存区域,所以至少创建一个对象。

2:判断下列代码创建了几个String对象,彼此直接是否相等.

   String str1 = "ABCD";

   String str2 = "A" +"B"+"C"+"D";  编译器优化之后,该代码等价于 str1.

   String str3 = "AB"+"CD";

   String c = "CD";

   String str4 = "AB" + c;

   String str5 = "AB" + getXX();  (备注:getXX方法返回"CD");

   String str6 = new String(“ABCD”)

==判断:   str1 == str2 ? // true

str1 == str3 ?   //true

str1 == str4 ?   //false

str1 == str5 ?   //false

str1 == str6 ?   //false

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

 

String对象比较:

1):单独使用""引号创建的字符串都是直接量,编译期就已经确定存储到常量池中;

2):使用new String("")创建的对象会存储到堆内存中,是运行期才创建;

3):使用只包含直接量的字符串连接符如"aa" + "bb"创建的也是直接量编译期就能确定,已经确定存储到常量池中;

4):使用包含String直接量(final修饰符)的字符串表达式("aa" + s1)创建的对象是运行期才创建的,存储在堆中;

通过变量/调用方法去连接字符串,都只能在运行时期才能确定环境变量的值和方法的返回值,不存在编译优化操作。

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

比较字符串:  ==:只能比较内存地址,若要比较内容:equals.

 

String类中的常用方法:

 

public class StringDome {
public static void main(String[] args) {
String str1 = "ABCD";
String str2 = "A" +"B"+"C"+"D"; //编译器优化之后,该代码等价于 str1.
String str3 = "AB"+"CD";
String c = "CD";
String str4 = "AB" + c;
String str5 = "AB" + getXX(); //(备注:getXX方法返回"CD");
String str6 = new String("ABCD");
//用==判断:
System.out.println(str1 == str2); // true
System.out.println(str1 == str3); //true
System.out.println(str1 == str4 ); //false
System.out.println(str1 == str5); //false
System.out.println(str1 == str6); //false
System.out.println(str1.equals(str2)); // true
System.out.println(str1.equals(str3)); // true
System.out.println(str1.equals(str4)); // true
System.out.println(str1.equals(str5)); // true
System.out.println(str1.equals(str6)); // true
String name ="";
System.out.println(StringUtil.judgeString(name));

}

private static String getXX() {

return "CD";
}
}

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

public class StringDome2 {

public static void main(String[] args) {
testString();
gainStringPrice();
capitalized();

}
private static void capitalized() {
/**
* toLowerCase() 将所有在此字符 String使用默认语言环境的规则,以小写。
* toUpperCase() 将所有在此字符 String使用默认语言环境的规则大写。
*/
System.out.println("ASSxsdfhsDSF".toLowerCase());
System.out.println("ASSxsdfhsDSF".toUpperCase());

}
private static void gainStringPrice() {
/**
* 获取字符串信息:
* int length();获取字符串长度
* char charAt(int index);返回index索引处的值。
* int index (String str);返回指定子字符串第一次出现的字符串内的索引。
* int lastIndexOf(int ch)返回指定字符的最后一次出现的字符串中的索引。
*/
String read = "ASDFGHJKDL";
System.out.println(read.length());
System.out.println(read.charAt(2));
System.out.println(read.indexOf("DF"));
System.out.println(read.lastIndexOf("KD"));

}
/**
* 把String字符串转换成byte数组 Byte [] a = getBytes(x);
* 把String字符串转换成char数组 Byte [] a = x.toCharArray();
* 把byte数组转换成String字符串 String x = new String(byte数组名);
* 把char数组转换成String字符串 String x = new String(char数组名);
*/

private static void testString() {
//byte数组与String之间的相互转换。
byte [] a = {'3','b','d','f','9'};
String x = new String(a);
System.out.println(x);
byte [] b = x.getBytes();
System.out.println(Arrays.toString(b));
//char数组与String之间的相互转换
char [] c = {'a','s','d','f'};
x = new String(c);
System.out.println(x);
char []ds = x.toCharArray();
System.out.println(Arrays.toString(ds));

}

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

判断字符串是否包含指定字符串

        boolean contains(CharSequence s)//CharSequence此处代表字符串
        int indexOf(String str);返回字符串出现的第一次的索引,字符串里没有指定的字符串则返回-1.

 

分别用StringStringBuiderStringBuffer拼接50000次字符串,对比各自损耗的时间。

经过测试:

String做字符拼接的时候性能极低,原因是string是不可变的,内次内容改变都会在内存中创建新的对象。

String 耗时1315ms

StringBuider 耗时 1ms

StringBuffer 耗时 3ms

结论:以后拼接字符,统统使用StringBuider / StringBuffer,不要使用string.

 

StringBuider 和 StringBuffer都表示可变的字符串,功能方法都是相同的。

唯一区别:

StringBuffer :StringBuffer中的方法名都使用了synchronized修饰符,表示同步的,在多线程并发的时候可以保证线程安全。(保证线程安全,性能也就降低了)

StringBuider(建议使用):StringBuider中的方法没有使用synchronized修饰。不安全,但是性能较高。

使用StringBuider无参数构造器,在底层创建了一个长度为16的char数组。

Char [] array = new StringBuider(16);

此时该数组只能储存16个字符,如果超过了得自动扩容。

自动扩容(创建长度更大的数组,在把之前的数组拷贝到新数组)

用Stringbuider创建一个长度为60的char数组:

char [] arr = new StringBuider(60);

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

常用方法:

1、append(Object obj):表示增加任意数据类型。

2、insert(int offset,Object obj)将 Object 参数的字符串表示形式插入此字符序列中。

3、StringBuffer delete(int start,int end) 删除此序列的子字符串中的字符。 子串开始于指定start并延伸到字符索引end - 1 ,或如果没有这样的字符存在的序列的结束。 如果start等于end ,则不作任何更改。

 

转载于:https://www.cnblogs.com/it-xiaoBai/p/8081350.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252625.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2021-11-15

本文将重点围绕国产CPU的发展历程与当前产业链各领军企业的布局情况作详尽解读(并包含特大号独家整理的最新进展),具体如下: 1、国产CPU发展历程回溯 2、飞腾:PK生态的主导者 3、鲲鹏:快速崛起的领导者 …

关于在ubuntu下配置AMD显卡驱动的总结

同样先卸载先前版本 代码:sudo sh /usr/share/ati/fglrx-uninstall.sh代码:sudo apt-get remove --purge fglrx fglrx_* fglrx-amdcccle* fglrx-dev*重启 代码:sudo reboot下载驱动,右边直接有ubuntu32位和64位驱动链接:http://support.amd.com/en-us/do…

计算机结构简图

北桥,南桥是主板上芯片组中最重要的两块了.它们都是总线控制器.他们是总线控制芯片.相对的来讲,北桥要比南桥更加重要.北桥连接系统总线,担负着cpu访问内存的重任.同时连接这AGP插口,控制PCI总线,割断了系统总线和局部总线,在这一段上速度是最快的.南桥不和CPU连接通常用来作I/…

Servlet 与 Ajax 交互一直报status=parsererror

Servlet 与 Ajax 交互一直报statusparsererror 原因:servlet 返回的数据不是 Json 格式 1、JS代码为: 1 var jsonStr {clusterNum:2,iterationNum:3,runTimes:4};2 $.ajax({3 type: "post",4 //http://172.2…

25LINQ拾遗及实例

投影 □ 遍历数组索引,Select获取 int[] indexes {0, 2}; string[] strs {"a", "b", "c", "d"}; var result from i in indexes select strs[i]; foreach (string str in result) { Console.Write(str " &quo…

国产CPU的6大品牌,3大路线对比

这些年来,中国最想发展的科技产品是什么?那必须是芯片,特别是2018年中兴事件、2019年华为事件之后,国内的芯片产业就彻底地火爆了起来。 按照数据显示,截止至2020年10月份,国内已经有27万家芯片企业&#…

龙芯与飞腾roadmap

飞腾roadmap 龙芯roadmap 龙芯系列处理器芯片是龙芯中科技术有限公司研发的具有自主知识产权的处理器芯片,产品以32位和64位单核及多核CPU/SOC为主,主要面向国家安全、高端嵌入式、个人电脑、服务器和高性能机等应用。产品线包括龙芯1号小CPU、龙芯2号中…

BZOJ 2440 完全平方数(莫比乌斯-容斥原理)

题目链接:http://61.187.179.132/JudgeOnline/problem.php?id2440 题意:给定K。求不是完全平方数(这里1不算完全平方数)的倍数的数字组成的数字集合S中第K小的数字是多少? 思路:首先,答案不超过…

在Eclipse中添加JDK源码包

一直有这想要在Eclipse直接阅读JDK的需求,之前用的都是反编译的,由于我用的反编译的插件去掉了源码内容的注释,所以想直接导入JDK源码包: 详细步骤: 打开Eclipse, 菜单栏 选择 Window 下拉种选取 Preferences 窗口. 以…

南桥芯片与北桥芯片

什么是芯片组 芯片组(英语:Chipset)是一组共同工作的集成电路“芯片”,并作为一个产品销售。它负责将计算机的微处理器和计算机的其他部分相连接,是决定主板级别的重要部件。以往,芯片组由多颗芯片组成&am…

spark 应用场景2-身高统计

原文引自:http://blog.csdn.net/fengzhimohan/article/details/78564610 a. 案例描述 本案例假设我们需要对某个省的人口 (10万) 性别还有身高进行统计,需要计算出男女人数,男性中的最高和最低身高,以及女性中的最高和最低身高。本…

React学习小结(二)

一、组件的嵌套 1 <!DOCTYPE html>2 <html>3 <head>4 <meta charset"UTF-8">5 <title></title>6 <script src"react.min.js" type"text/javascript" charset"utf-8"></script>7 <…

PCIE2.0/PCIE3.0/PCIE4.0/PCIE5.0接口的带宽、速率计算

一、PCIE接口速率&#xff1a; 二、PCIE相关概念&#xff1a; 传输速率为每秒传输量GT/s&#xff0c;而不是每秒位数Gbps&#xff0c;因为传输量包括不提供额外吞吐量的开销位&#xff1b; 比如 PCIe 1.x和PCIe 2.x使用8b / 10b编码方案&#xff0c;导致占用了20% &#xff08…

hql语法

HQL查询&#xff1a;Criteria查询对查询条件进行了面向对象封装&#xff0c;符合编程人员的思维方式&#xff0c;不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查询特性&#xff0c;因此Hibernate将HQL查询方式立为官方推荐的标准查询方式&#xff0c;HQL查…

InfiniBand简介

一&#xff0e;什么是infiniband InfiniBand架构是一种支持多并发链接的“转换线缆”技术&#xff0c;它是新一代服务器硬件平台的I/O标准。由于它具有高带宽、低延时、 高可扩展性的特点&#xff0c;它非常适用于服务器与服务器&#xff08;比如复制&#xff0c;分布式工作等…

阿里云Aliplayer高级功能介绍(一):视频截图

基本介绍H5 Video是不提供截图的API的&#xff0c; 视频截图需要借助Canvas&#xff0c;通过Canvas提供的drawImage方法&#xff0c;把Video的当前画面渲染到画布上&#xff0c; 最终通过toDataURL方法可以导出图片的base64编码&#xff0c;基本就完成了图片截图的功能。 功能实…

分页

1.首先在数据库中建立一个视图&#xff08;在aspx中sql查询语句是view_student不是student&#xff09;&#xff0c;在视图里创建create view view_student--创建视图as row_number 行号 一条数据是一行 分页功能要根据行数运算select *,row_number() over(order by stuNo desc…

PCIE总线-PCI、PCIE关系及信号定义

PCI(Peripheral Component Interconnect)总线规范在上世纪九十年代由Intel提出。在处理器体系结构中&#xff0c;PCI总线属于局部总线(Local Bus)。局部总线作为系统总线的延伸&#xff0c;主要功能是为了连接外部设备。 处理器主频的不断提升&#xff0c;要求速度更快&#x…

SQL Server:SQL Like 通配符特殊用法:Escape

%&#xff1a;匹配零个及多个任意字符&#xff1b; _&#xff1a;与任意单字符匹配&#xff1b; []&#xff1a;匹配一个范围&#xff1b; [^]&#xff1a;排除一个范围 &#xff1b;-&#xff1a;连字符 Symbol Meaning like 5[%] 5% like [_]n _n like [a-cdf] a, b, c, d, o…