String类(二)

构造函数

  •   public String(char value[])

    源码

public String(char value[]) {
	int size = value.length;
	this.offset = 0;
	this.count = size;
	this.value = Arrays.copyOf(value, size);
    }

这其中是用了Arrays类中copyof方法,继续看看这个方法的源码

 public static char[] copyOf(char[] original, int newLength) {
        char[] copy = new char[newLength];
        System.arraycopy(original, 0, copy, 0,
                         Math.min(original.length, newLength));
        return copy;
    }

Math的min方法源码

    public static int min(int a, int b) {
	return (a <= b) ? a : b;
    }

现在从下往上面看,System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength));这段代码是copy数组,将original数组赋值给copy数组。应该对这个方法做个试验:

public static void main(String[] args) {

		char[] oraginal ={‘b‘,‘c‘,‘d‘,‘e‘};
		char[] copy = new char[4];

		System.arraycopy(oraginal, 1, copy, 0, 3);

		for(int i=0;i<copy.length;i++){
			System.out.print(copy[i]+" ");
		}

	}

上面是测试public static native void arraycopy(Object src,  int  srcPos, Object dest, int destPos,int length);方法的代码

这个方法是native方法,我们并不能看到起源码。这

src是源数组,srcPos源数组开始的位置,dest目的数组,destPos目的数组的起始位置,length需要被复制的长度。

继续看这次介绍的构造函数,也就是在调用构造函数时,将传入的char[]赋值给String对象的value属性,并且改变String属性的offest和count

时间: 2024-08-04 17:26:08

String类(二)的相关文章

String类 (二) ~正则表达式

正则表达式 1. 概述 正则表达式本质就是一个 字符串,用于进行数据格式的验证. 通常情况下,正则表达式使用  ^ (异或符号)开头,使用$  (美元符号) 结尾.        可以省略,但是推荐写上 2.常用规则 字符类: [abc]     -表示可以出现a.b 或c中的任意字符 [^abc]   -表示可以出现任意字符,除了a.b 及c [a-zA-Z]  -表示可以出现a到z 和 A到Z之间的任意字符.即可以出现所有的字母. 预定字: \d  -表示可以出现任何数字,相当于[0~9]

C#拾遗之String类(二)

接上一篇文章继续说String类 六,字符串的删除 字符串的删除是通过Remove方法实现的,格式为: (1)字符串.Remove(开始位置) (2)字符串.Remove(开始位置,移除数) 其中,开始位置是指字符串的索引,是一个整数,且小于字符串的长度.第一种格式,是将字符串开始位置后的所有子子符删除,而第二种是将从开始位置开始数到移除数位置的字符删除. 例六,实现字符串str的删除 <span style="font-size:18px;">using System;

JDK中String类的源码分析(二)

1.startsWith(String prefix, int toffset)方法 包括startsWith(*),endsWith(*)方法,都是调用上述一个方法 1 public boolean startsWith(String prefix, int toffset) { 2 char ta[] = value; 3 int to = toffset; 4 char pa[] = prefix.value; 5 int po = 0; 6 int pc = prefix.value.l

新手学JAVA(二)----String类与StringBuffer类的区别

在Java中有两种字符串的操作:String类和StringBuffer类(缓冲字符串处理类). 下面先简单的说一下两者的区别. String类和StringBuffer类都提供了相应的方法实现字符串的操作,但二者略有不同. (1) String类 该类一旦产生一个字符串,其对象就不可变.String类的内容和长度是固定的.如果程序需要获得字符串的信息需要调用系统提供的各种字符串操作方法实现.虽然通过各种系统方法可以对字符串施加操作,但这并不改变对象实例本身,而是生成一个新的实例.系统为Stri

java String 类 基础笔记

字符串是一个特殊的对象. 字符串一旦初始化就不可以被改变. String s = "abc";//存放于字符串常量池,产生1个对象 String s1=new String("abc");//堆内存中new创建了一个String对象,产生2个对象 String类中的equals比较字符串中的内容. 常用方法: 一:获取 1.获取字符串中字符的个数(长度):length();方法. 2.根据位置获取字符:charAt(int index); 3.根据字符获取在字符串中

String类

一.概述 Sting s1 = "abc";    //s1是一个类类型变量,"abc"是一个对象. String s2 = new String("abc"); //s1 . s2 的区别: 前者在内存中有一个对象,后者在内存中有两个对象. s1.equals(s2) 为true  因为 String复写了equals方法 二.常见的功能-获取和判断 获取: 1.int length(); 获取长度 2.char chatAt(int inde

String类replaceAll方法正则替换深入分析

作者网址: https://my.oschina.net/shipley/blog/98973 背景:      前几天有人发了一个关于下面问题的贴,对这个有点好奇,故花时间做了点研究.        对单个反斜杠字符串替换成双斜杠的Java实现如下:    String s = "\\";    方法一:String sr1 = s.replaceAll("\\\\", "\\\\\\\\");    方法二:String sr1 = s.re

Java String类的常用方法

String(byte[ ] bytes):通过byte数组构造字符串对象. String(char[ ] value):通过char数组构造字符串对象. String(Sting original):构造一个original的副本.即:拷贝一个original. String(StringBuffer buffer):通过StringBuffer数组构造字符串对象. byte[] b = {'a','b','c','d','e','f','g','h','i','j'}; char[] c =

关于JAVA的String类的一些方法

一.得到字符串对象的有关信息 1.通过调用length()方法得到String的长度. String str=”This is a String”; int len =str.length(); 2.StringBuffer类的capacity()方法与String类的 length()的方法类似,但是她测试是分配给StringBuffer的内存空间的大小,而不是当前被使用了的内存空间. 3.如果想确定字符串中指定字符或子字符串在给定字符串的位置,可以用 indexOf()和lastIndexO

关于如何来构造一个String类

今天帮着一位大二的学弟写了一个String的类,后来一想这个技术点,也许不是什么难点,但是还是简单的记录一些吧! 为那些还在路上爬行的行者,剖析一些基本的实现..... 内容写的过于简单,没有涉及到其他格式的如考虑utf_8.这儿单纯的考虑了char的使用....... 1 #define _CRT_SECURE_NO_WARNINGS 2 #include<iostream> 3 #include<stdlib.h> 4 #include<string.h> 5 #i