两种实例化方式的区别

      1)直接赋值(String str = "hello"):只开辟一块堆内存空间,并且会自动入池,不会产生垃圾。

      2)构造方法(String str=  new String("hello");):会开辟两块堆内存空间,其中一块堆内存会变成垃圾被系统回收,而且不能够自动入池,需要通过public  String intern();方法进行手工入池。

Static

可以修饰的内容:1变量2方法3类4静态代码块

的特点

String:方法系列

String类的获取功能

  int length():获取字符串的长度,其实也就是字符个数
  char charAt(int index):获取指定索引处的字符
  int indexOf(String str):获取str在字符串对象中第一次出现的索引
  String substring(int start):从start开始截取字符串
  String substring(int start,int end):从start开始,到end结束截取字符串。包括start,不包括end

String的判断功能

  boolean equals(Object obj):比较字符串的内容是否相同
  boolean equalsIgnoreCase(String str): 比较字符串的内容是否相同,忽略大小写
  boolean startsWith(String str): 判断字符串对象是否以指定的str开头
  boolean endsWith(String str): 判断字符串对象是否以指定的str结尾

String的转换功能

  char[] toCharArray():把字符串转换为字符数组
  String toLowerCase():把字符串转换为小写字符串
  String toUpperCase():把字符串转换为大写字符串

其他常用方法

  去除字符串两端空格:String trim()
  按照指定符号分割字符串:String[] split(String str)

在String的情况下==与equals的区别

基本数据类型:比较的是基本数据类型的值是否相同
 引用数据类型:比较的是引用数据类型的地址值是否相同
 所以在这里的话:String类对象==比较,比较的是地址,而不是内容

代码1 eq与==的区别

String str1 = "Lance";
String str2 = new String("lance");
String str3 = str2; //引用传递,str3直接指向st2的堆内存地址
String str4 = "Lance";
System.out.println(str1+str4);
/**
* ==:
* 基本数据类型:比较的是基本数据类型的值是否相同
* 引用数据类型:比较的是引用数据类型的地址值是否相同
* 所以在这里的话:String类对象==比较,比较的是地址,而不是内容
*/
System.out.println(str1.equalsIgnoreCase(str2));
System.out.println(str4.equals(str3));
System.out.println(str1 == str2);//false
System.out.println(str1 == str3);//false
System.out.println(str3 == str2);//true
System.out.println(str1 == str4);//true
System.out.println(str4.toUpperCase());  

代码2 手机号

//存放的是电话号码包含的数字
int[] nums = {4, 2, 1, 0, 8, 3};
//电话号码出现的下标
int[] index = {2, 4, 5, 2, 3, 0, 3, 2, 1, 0, 0};
// 求电话号码15753049998
for (int i = 0; i < index.length; i++) {
System.out.print(nums[index[i]]);
}
System.out.println();
for (int a : index) {
System.out.print(nums[a]);
}

代码3 二维数组

int[][] arr = {{1}, {2, 2}, {3, 3, 3}, {4, 4, 4, 4}, {5, 5, 5, 5, 5}, {6, 6, 6, 6, 6, 6}};
for (int i = 0; i < arr.length; i++) { //遍历二维数组,遍历出来的每一个元素是一个一维数组
for (int j = 0; j < arr[i].length; j++) { //遍历对应位置上的一维数组
System.out.print(arr[i][j]);
}
System.out.println();
}
for (int[] i:arr){
for (int j:i){
System.out.print(j);
}
System.out.println();
}

代码4 算出出现次数

public static void main(String[] args) {
String str = "吃葡萄不吐葡萄皮,不吃葡萄倒吐葡萄皮";
//请用四种方法统计 葡萄 出现的次数
// 第一种
String str1 = str.replace("葡萄", " ");
char[] data = str1.toCharArray();
int count = 0;
for (char a : data) {
if (a == ' ') {
count++;
}
}
System.out.println(count);
// 第二种
int countt = 0;
int x = 0;
while (x != -1) {
x = str.indexOf("葡萄");
if (x != -1) {
countt++;
str = str.replaceFirst("葡萄", "");
}
}
System.out.println(countt);
// 第三种
int counte = 0;
int xx = 0;
while (xx != -1) {
xx = str.indexOf("葡萄");
if (xx != -1) {
if ((xx + 2) < str.length()) {
str = str.substring(xx + 2);
}
counte++;
}
}
System.out.println(count);
}

复习string和数组的更多相关文章

  1. hdu 3553 Just a String (后缀数组)

    hdu 3553 Just a String (后缀数组) 题意:很简单,问一个字符串的第k大的子串是谁. 解题思路:后缀数组.先预处理一遍,把能算的都算出来.将后缀按sa排序,假如我们知道答案在那个 ...

  2. 范围运算符和索引的最终运算符 ^ 在string 和数组中的应用

    //范围运算符在string 和数组中的应用 static void Main(string[] args) { string examplestring = "123456789" ...

  3. js复习---string

    对js的string的方法复习: 1.charCodeAt()  返回一个整数,代表指定位置字符串的unicode编码. strObj.charCodeAt(index) index 是处理字符的从零 ...

  4. asp.net mvc int[] 和 string[] 自定义数组绑定

    新建类,int[]数组模型绑定 using System; using System.Collections.Generic; using System.Linq; using System.Web; ...

  5. Big String 块状数组(或者说平方分割)

    Big String 给一个字符串,长度不超过 106,有两种操作: 1. 在第 i 个字符的前面添加一个字符 ch 2. 查询第 k 个位置是什么字符 操作的总数不超过 2000 如果直接模拟的话, ...

  6. JavaScript string array 数组

    Array类可以如下定义: var aValues = new Array(); 如果预先知道数组的长度,可以用参数传递长度 var aValues = new Array(20); -------- ...

  7. golang byte转string 字节数组转字符串的问题

    golang语言本身就是c的工具集,开发c的程序用到的大部分结构体,内存管理,携程等,golang基本都有,他只是在这个基础上又加了一些概念这里说一个很小的问题,就是字节数组转string的问题,网上 ...

  8. POJ3729 Facer’s string 后缀数组

                                                                                                      Fa ...

  9. hdu 5030 Rabbit&#39;s String(后缀数组&amp;二分法)

    Rabbit's String Time Limit: 40000/20000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

随机推荐

  1. 用EPPlus 读取excel,代码出错, the given key is not present in the dictionary

    using (ExcelPackage ep = new ExcelPackage(new FileInfo(path))) { ExcelWorksheet ws = ep.Workbook.Wor ...

  2. 【vue学习】vue 2.0版本以上创建项目的的步骤

    一.环境准备 1.vue项目依赖 node.js npm,需要先安装node和npm,先检查本地是否安装node.npm 快捷键win+r   输入cmd  弹出操作框,如果电脑已经安装git,直接右 ...

  3. caioj.cn 3004:中山市第九届小学生信息学邀请赛试题 5.合并线段

    CSDN的博客 友键 [题目描述] 有一条很长的尺子,上面标记着整数点的坐标.如: 现在给出n条线段,每条线段表示为x-y(x和y为整数,x<=y),两条线段能合并的条件是x-y,y-z,合并为 ...

  4. python中list,tuple,dict,set等深浅拷贝的问题记录

    对于字典.元祖.列表 而言,进行赋值.浅拷贝和深拷贝时,其内存地址的变化是不同的. 1.赋值 赋值,只是创建一个变量,该变量指向原来内存地址,如: 1 2 3 n1 = {"k1" ...

  5. C#Mvc4.0IIS部署(内网)

    安装IIS(百度中搜索教程安装) 在Vs中将项目发布到文件夹 回到桌面,右键计算机=>管理=>服务和应用程序=>Internet信息服务(IIS)管理器 右键添加新网站,输入网站名称 ...

  6. 201671010142 2017-2 《java第十一章学习感悟》

    事件处理基础 事件源,事件监听器,事件监听器  监听器接口的实现,监听器对象所属类必须实现与事件源相对应的接口,即必须提供接口中方法的实现. 适配器类 当程序用户试图关闭一个框架窗口时,Jframe对 ...

  7. ABP-DDD学习

    有一个比较大的项目,打算使用 DDD +ABP +微服务 开发: 1.涉及到社交: 业务场景比较复杂:会多变: 2.采用前后端分离,netcore+vue; 3.部署采用K8S +docker 进行部 ...

  8. mpeg4文件分析(纯c解析代码)

    参考链接: 1. MPEG4码流的帧率计算 https://blog.csdn.net/littlebee90/article/details/68924690                2. M ...

  9. mpeg2文件分析(纯c解析代码)

    参考链接: 1. MPEG-2码流结构分析 https://www.cnblogs.com/CoderTian/p/9246225.html(本文语法采用这里的截图,代码原创) 1. mpeg2的码流 ...

  10. 利用phpredis实现PHP操作Redis

    redis在PHP中的基本使用案例 利用phpredis实现PHP操作Redis,需要进行redis.so的下载,添加 //利用Redis类进行操作 //实例化Redis类 $redis = new ...