鱼C论坛

 找回密码
 立即注册
查看: 2705|回复: 0

[学习笔记] Java暑期学习Day09 (字符串)

[复制链接]
发表于 2017-7-13 23:37:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

Today is the 9th day and i hope i can stick to it.


无论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[i];
                        if (i != arr.length - 1) {
                                ret = ret + ",";

                        }
                }

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

        }

        /*
         * int[] src ={1,2,3,4,5}; 目标 int[] dest=new int[10];
         * 
         * 从哪一个位置开始拷贝 在目标数组中开始存放的位置 考虑拷贝几个元素 拷贝方法
         * 
         * 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[destPos] = src[index];
                        destPos++;

                }

        }

        public static void main(String[] args) {

                int[] src = { 1, 2, 3, 7, 8, 11 };
                int[] dest = new int[10];
                // 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);//[0,0,0,3,7,8,11,0,0,0]
        }

}

字符串对象(引用数据类型)
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鱼币 +7 收起 理由
小甲鱼 + 7 支持楼主!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-14 12:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表