1.数组

public class Test{

                  public static void main(String args[]){
int[] intArray = new int[] {1,4,3,2,5};//等价于 : int intArray[] = new int[] {1,2,3,4,5}; System.out.println(intArray.length); //打印长度 //使用java.util.Arrays工具类 来操作 数组
System.out.println(java.util.Arrays.toString(intArray));//打印内容
java.util.Arrays.sort(intArray); //排序
System.out.println("4="+java.util.Arrays.binarySearch(intArray,4));//通过2分查找4所在的位置(必须先排序才行) System.out.println(java.util.Arrays.toString(intArray));//打印内容 //初次之外java.util.Arrays类还有:
//copyOf():复制
//copyOfRange():指定具体范围复制
//equals():判断两个数组是否相等
//fill():填充某个值
//hashCode():根据数组内容返回哈希码
}
}

2.二维数组

初始化的一般为3种:

         int[][] arr1 = {{1,2}, {2, 3}, {4, 5}};
int[][] arr2 = new int[5][5];
int[][] arr3 = new int[5][]; //这种则需要使用的时候再去new一次,否则无法确定二维大小

示例:

public class Test{

         public static void main(String args[]){
int[][] arr3 = new int[5][]; for(int i=0; i<arr3.length; ++i) {
arr3[i] = new int[i + 1]; for (int j = 0; j < arr3[i].length; ++j)
arr3[i][j] = i + j;
} for(int i=0; i<arr3.length; ++i)
System.out.println(java.util.Arrays.toString(arr3[i]));
}
}

打印:

3.String

java中的String采用共享设计模式(后续会讲),都存在string池中,存储的是常量字符串.

string常量字符串的说明可以看第2章说明:2.JAVA-基础语法以及String的介绍

3.1 String两种实例化说明

String strA = "123";                         //只会在string池中创建"123"常量字符串

String strB = new String("123");             //由于string池中已经有了"123",所以只在堆空间分配一段内存来存储"123",然后使strB引用它.

strA = "124";                                //在string池中创建"124"并返回这个地址,并且将之前的"123"视为垃圾,等待回收站释放.

3.2 ==和equals()的区别

  •    ==     :   用来判断String的内存地址是否相等
  • equals(): 用来判断两个String的字符串内容相等

示例:

String strA = "123";                      //在string池中创建"123"字符串,并返回这个引用

String strB =strA;                        //strB和strA相等

String strC = "1" + "23";                 //strC="123",由于string池中已经有了"123",所以直接让strA=strB=strC

String strD = new String("123");          //可能会分配两块空间,1:首先会去string池中寻找"123"字符串,如果存在则直接调用,否则在池中创建"123".
//2:然后在堆空间创建"123"的一段内存,使strD引用它.
//3: 最后再去判断string池中的"123"是否被其它对象使用,如果没有,则视为垃圾,等待释放. System.out.println("strA == strB:"+(strA==strB));
System.out.println("strA == strC:"+(strA==strC));
System.out.println("strA == strD:"+(strA==strD));
System.out.println("equals:"+strA.equals(strD));

打印如下:

3.3 String共享设计模式

我们先将上个示例对应的图画出来,如下所示:

如上图所示.在JVM底层上是有一个string池(同样也有其它类似的池),当代码中使用了直接赋值的方式定义一个string对象时,会将此字符串对象所使用的匿名对象进行入池保存,而后面如果又重新定义String对象,并且设置相同内容时,那么将不会在String池开辟新空间,而是继续使用,这种模式叫做共享设计模式.

3.4 String的new实例化之手工入池

String有一个intern()方法,可以使new实例化实现手工入池,intern方法定义如下:

public String intern();
//在string池中寻找等于此string的字符串,如果字符串存在,则返回池中的字符串,否则,在池中创建字符串后再返回池中的字符串.

示例如下:

String strA = new String("123").intern();   //在堆空间创建"123"的一段内存.并且将"123"入池,然后返回池中的"123"所在的位置
String strB = "123"; //返回池中的"123"所在的位置
System.out.println(strA==strB); //打印true

打印如下:

3.5 String之其它常用成员方法

String str="hello world 我";

char[] data = str.toCharArray();               //将String转为char

System.out.println(str.charAt(2));           //返回小标处2的char值,返回l

System.out.println(str.codePointAt(11));     //返回小标出11(“我”)的Unicode码

String str1 = str.concat("是NQIAN");          //将str和"是NQIAN"进行连接,并返回给str1
System.out.println(str1); System.out.println( str.compareTo("hello.") ); //将"hello world 我"和"hello"按ASC表进行比较
                             // 如果str大于"hello."返回正数,相等返回0,小于返回负数 System.out.println( str.compareToIgnoreCase ("hello.") ); //忽略大小写比较两个字符串 System.out.println( str.contains("he") ); //判断str里是否包含"he"字符,包含返回true,否则返回false System.out.println( str. startsWith("he") ); //如果str是以"he"开头,返回true,否则返回false System.out.println( str.endsWith("he") ); //如果str是以"he"结尾,返回true,否则返回false System.out.println( str.equals("hello world 我") ); //判断两个字符串内容是否相等,返回boolean类型 System.out.println( str.equalsIgnoreCase ("hello world 我") ); //忽略大小,判断两个字符串内容是否相等 System.out.println( str.format("str1:%03d %03f %s",75,5.234,"format") );
//类似于sprintf(),打印"str1:075 5.23400 format",需要注意:并不会改变对象本身内容,str的值还是为:hello world 我 System.out.println( str.hashCode () ); // 返回str的哈希值(内容不同的字符串,哈希值都不同) System.out.println( str. indexOf ("e")); //从头查找出现e字符的位置,所以返回1,如果未找到返回-1 System.out.println( str. indexOf ("ld",4)); //从下标4处查找出现"ld"的位置并返回,如果未找到返回-1 System.out.println( str. lastIndexOf ("e")); //从尾部向前查找出现e字符的位置并返回,如果未找到返回-1 System.out.println( str. lastIndexOf ("o",5)); //从下标4处尾部向前查找出现"o"的位置,所以返回4 System.out.println( str. length ()); //返回String长度 System.out.println( str. isEmpty ()); //判断是否为空 System.out.println( str. replace("l","o")); //将字符串中的l替换为o,所以打印" heooo worod 我" String[] arrStr = str. split(" "); //以" "来拆开字符串,所以arrStr[0]="hello",arrStr[1]="world", arrStr[2]="我" System.out.println( str. substring(1,5)); //返回str的内容下标1~4的串(不包括5),所以打印:ello System.out.println( str.toLowerCase()); //返回str的小写内容 System.out.println( str. toUpperCase()); //返回str的大写内容 System.out.println( " adc ABC ". trim ()); //trim修剪字符串头和尾部的空格,所以打印:"abc ABC",注意:如果头尾的字符小于空格的话,也会被修剪掉的. System.out.println( str.valueOf(true)); //返回true对应的字符串,也就是"true",当然valueOf也满足int,double等参数

下章学习:5.JAVA-内部类实例

4.JAVA-数组、String详解的更多相关文章

  1. Java的String详解

    Java的String详解 博客分类: Java javaStringString详解常用方法  Java的String类在开发时经常都会被使用到,由此可见String的重要性.经过这次认真仔细的学习 ...

  2. 最新java数组的详解

    java中HashMap详解 http://alex09.iteye.com/blog/539545 总结: 1.就像引用类型的数组一样,当我们把 Java 对象放入数组之时,并不是真正的把 Java ...

  3. 浅析Java 数组-基础详解

    什么是数组:数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. Java 数组:用来存储固定大小的同类型元素. 一 声明.创建,初始化Java 数组 写在前面 ...

  4. [转]Java数组初始化详解

    一维数组1)   int[] a;   //声明,没有初始化 2)   int[] a=new int[5];   //初始化为默认值,int型为0 3)   int[] a={1,2,3,4,5}; ...

  5. Java字符串String详解

    1.String字符串 实例化String对象: (1)直接赋值,如:String str="hello"; (2)使用关键字 new,如:String str=new Strin ...

  6. JAVA IO 类库详解

    JAVA IO类库详解 一.InputStream类 1.表示字节输入流的所有类的超类,是一个抽象类. 2.类的方法 方法 参数 功能详述 InputStream 构造方法 available 如果用 ...

  7. 【转】 java中HashMap详解

    原文网址:http://blog.csdn.net/caihaijiang/article/details/6280251 java中HashMap详解 HashMap 和 HashSet 是 Jav ...

  8. java中HashMap详解(转)

    java中HashMap详解 博客分类: JavaSE Java算法JDK编程生活       HashMap 和 HashSet 是 Java Collection Framework 的两个重要成 ...

  9. java集合(2)- java中HashMap详解

    java中HashMap详解 基于哈希表的 Map 接口的实现.此实现提供所有可选的映射操作,并允许使用 null 值和 null 键.(除了非同步和允许使用 null 之外,HashMap 类与 H ...

  10. java集合框架详解

    java集合框架详解 一.Collection和Collections直接的区别 Collection是在java.util包下面的接口,是集合框架层次的父接口.常用的继承该接口的有list和set. ...

随机推荐

  1. TCP连接和 time_wait、close_waite

    TCP连接和 time_wait.close_waite tags:time_wait close_waite RST TCP 引言:前两天朋友公司的服务器垮掉了,最后查出的原因是发现大量的time_ ...

  2. dubbo实现原理简单介绍

    一.什么是dubbo   Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合).从服务模型的角度来看,     ...

  3. PAT1097:Deduplication on a Linked List

    1097. Deduplication on a Linked List (25) 时间限制 300 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 ...

  4. sniffer pro 使用方法

    一.捕获数据包前的准备工作 在默认情况下,sniffer将捕获其接入碰撞域中流经的所有数据包,但在某些场景下,有些数据包可能不是我们所需要的,为了快速定位网络问题所在,有必要对所要捕获的数据包作过滤. ...

  5. PAT1102: Invert a Binary Tree

    1102. Invert a Binary Tree (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue ...

  6. 使用SimHash进行海量文本去重[转载]

    阅读目录 1. SimHash与传统hash函数的区别 2. SimHash算法思想 3. SimHash流程实现 4. SimHash签名距离计算 5. SimHash存储和索引 6. SimHas ...

  7. Servlet、Filter

    加载顺序是:context-param -> listener -> filter -> servlet ,而同个类型之间的实际程序调用的时候的顺序是根据对应的 mapping 的顺 ...

  8. Using variables inside Postman and Collection Runner

    Variables are among the most powerful features in Postman. Using variables in your Postman requests, ...

  9. 「JavaScript」JS四种跨域方式详解

    原文地址https://segmentfault.com/a/1190000003642057 超详细并且带 Demo 的 JavaScript 跨域指南来了! 本文基于你了解 JavaScript ...

  10. ImageMagick简介、GraphicsMagick、命令行使用示例

    http://elf8848.iteye.com/blog/382528 ImageMagick资料 ------------------------------------------------- ...