马太效应 发表于 2017-7-13 23:37:38

Java暑期学习Day09 (字符串)

本帖最后由 马太效应 于 2017-7-13 23:37 编辑

Today is the 9th day and i hope i can stick to it.{:7_130:}


①无论System.arraycopy()还是Arrays.copyOf,用在类类型声明的数组时,都是执行浅层复制。
Java对象的深层复制是指Java对象A本身被clone成新对象B,同时A的属性也是被clone成新对象,赋值到A的各个属性上去,A与B的相同属性都引用到不同的对象;
Java对象的浅层复制是指Java对象A本身被clone成新对象B,但A的属性没有被clone处理,只是把A的各个属性所指的对象赋值到B对应的属性上,A与B的相同属性都引用到同一个对象。



//数组元素拷贝

public class Test {

      static void print(int[] arr) {
                String ret = "[";
                for (int i = 0; i < arr.length; i++) {
                        ret = ret + arr;
                        if (i != arr.length - 1) {
                              ret = ret + ",";

                        }
                }

                ret = ret + "]";
                System.out.println(ret);

      }

      /*
         * int[] src ={1,2,3,4,5}; 目标 int[] dest=new int;
         *
         * 从哪一个位置开始拷贝 在目标数组中开始存放的位置 考虑拷贝几个元素 拷贝方法
         *
         * src:源,从哪个数组中拷贝数据
         * dest:目标,把数据拷贝到哪一个数组中
         * srcPos:从源数组中的哪一位置开始拷贝
         * destPos:在目标数组中开始存放的位置
         * length:拷贝几个元素
         */

      static void arrayCopy(int[] src, int srcPos, int[] dest, int destPos,
                        int length) {
               
                for (int index = srcPos; index < srcPos + length; index++) {

                        dest = src;
                        destPos++;

                }

      }

      public static void main(String[] args) {

                int[] src = { 1, 2, 3, 7, 8, 11 };
                int[] dest = new int;
                // print(dest);
                // 把src数组中的3,7,8,11拷贝到dest数组中
                // arrayCopy(src,2,dest,3,4);
                // print(dest);
                System.arraycopy(src, 2, dest, 3, 4);
                print(dest);//
      }

}


②字符串对象(引用数据类型)public class StringDemo {
      public static void main(String[] args) {

                String name = "Apple";
                System.out.println(name.charAt(0));// A
                System.out.println(name.toUpperCase());// APPLE
                char[] cs = { 'A', 'p', 'p', 'l', 'e' };
                String name1 = new String(cs);
                char[] cs2 = name1.toCharArray();

      }

}
a.字符串本质是打包字符数组的对象,是java.lang.String的实例。
b.在启动JVM并指定执行类时,可以一并指定命令行自变量,会收集为String数组,由main()中的args参考。
c.使用charAt()指定取得字符串中某个字符,索引从0开始;
使用toUpperCase()将原本小写的字符串内容转为大写的字符串内容

d.字符串剖析为基本类型

方法 说明
Byte.parseByte(number) 将number剖析为byte整数
Float.parseFloat(number) 将number剖析为float浮点数
Integer.parseInt(number) 将number剖析为int整数
... ..

e.以""包括的字符串,只要内容相同(序列、大小写相同),无论在程序代码中出现几次,JVM都只会建立一个String实例,并在字符串池中维护。

f.比较字符串实际字符内容是否相同,使用equals()。

g.字符串对象一旦建立,就无法更改对象中任何内容,对象上没有任何方法可以更改字符串内容。


h.字符串的使用“”,链接字符串必须使用+符号
任何数据类型和String相连接(+),结构都是一个新的字符串
public class StringDemo2 {

        public static void main(String[] args) {

                // Java引用类型:类,接口,数组
                // 最常用的引用接口类型:String类->字符串
                // 引用类型的初始值:null (空)

                String useName = new String();
                useName = "维尼熊";
                System.out.println("名字:" + useName);// 名字:维尼熊

                int age = 17;
                System.out.println("年龄=" + age);// 年龄=17

                // \" \" 转义字符
                System.out.println("\"你好世界\"");// "你好世界"

                System.out.println(8 + 7 + "Hello");// 15Hello
                System.out.println("Hello" + 7 + 8);// Hello78
                System.out.println(7 + "Hello" + 8);// 7Hello8

                /* int xx="ABC";//不兼容的类型,String无法转换为int */
        }

}





页: [1]
查看完整版本: Java暑期学习Day09 (字符串)