字符串和数组使用时该注意的一些地方

String 类型的初始化的三种常见手法:

1、使用new 关键字的话,就可以直接在构造函数中传入String类型的参数,例如:String name = new String("Name");

2、也还可以以char[]类型的参数对构造函数的形参赋值,例如:char[] te = {‘a‘,‘a‘,‘b‘};String s = new String(ch);

3、也还可以使用byte[]数组 实现String构造函数的初始化,其中byte的类型就是以一个一个字节数据类型的大小范围内赋值。其值在0~255之间变化,其中每两个字节数据类型组成一个汉字,比如-61和-26就组成“面”这个字,当然这是根据具体的中文编码类型来判断一个汉字是占用几个字节。具体请查看GB2312和GBK 以及UTF-8 对中文进行编码的细则

4、还可以对char 类型的数组中从某个元素起开始取值到从这个元素开始去多少个字符;同理对byte类型的数组也同样适合。

例如:char[] te = {‘a‘,‘a‘,‘b‘}; String s = new String(ch,0,3);s 的结果值为:aab

但是有一点需注意:结束的值不能超过数组类型的长度;也即 offset+length < 字符数组.length

如果超过了字符数组的长度,这个时候编译不会报错,这是因为在编译阶段,编译器只检查语义和语法上的错误。但运行结果让人出乎意料的:此时会出现StringIndexOutOfBoundsException异常。这一点切记!这也是在开发中通常隐藏的比较深的一类错误,即运行期的错误,也叫逻辑上的错误。这类错误一般是比较难查找的,所以要求我们每位程序员在编代码的时候格外小心,的注意安全呀!

时间: 2024-11-07 00:30:53

字符串和数组使用时该注意的一些地方的相关文章

C 数组使用时注意点

数组注意点: 数组为静态时,初始化长度必为常量表达式 数组长度由最后一个元素决定其长度,可以指定特定元素,如: int arr[] = {0, 1, [5]=5, 6}; 没有提供初始值的元素赋值为0或NULL 数组作为参数传递时,被转化为指向第一个元素的指针,而不再是数组,无法使用sizeof取得长度,但是如果传入的是二维数组时,形参必需指定二维数组长度,如对函数 void test(int arr[][5]) 来说,直接sizeof(arr)时是指针的长度,但是sizeof(arr[0])时

Cocos2D中Node的userObject实例变量使用时一个要注意的地方

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们知道在Cocos2D中,CCNode对象有一个ivar为userObject,它可以用来很方便的存储一些和该对象相关的数据,这样你就没必要费劲的去写子类继承了. 但是要注意的是,如果你的node添加到一个节点当做子类,比如: [someBaba addChild:myNode]; 那么在调用如下一句将myNode从父节点中删除时,其中的userObject也

C++ NULL 与 空字符串 在使用时的注意点

在这不做 理论上的 释疑,只是提供示例代码 int main() { char *p=NULL; if (p==NULL) // { p="p is NULL pointer"; } printf("%s\n",p); return 0; } //此处说明:在定义 指针p的同时使用 NULL 对p进行初始化,若是在比较的时候用 p[0] == '\0' 则会报错//   原因是 p不指向任何变量,对p进行[]操作非法//   变量所指的范围 包括 普通的内置变量,自

char型字符串(数组)与string型字符串 指针与引用

一.常指针: int *const p;    //指针不可改变,但是指针指向的数据可以改变. 指向常量的指针: const int *p;    //指针可以改变,但是指针指向的数据不可以改变. 指向常量的常指针: const int *const p;    //指针不可改变,且指针指向的数据也不可改变. 引用就是别名,定义引用的同时必须要对引用进行初始化. 二.利用引用返回多个值: 引用就是别名,引用必须要初始化. #include "stdafx.h" #include <

EntityFrameWork 使用时碰到的小问题

EntityFrameWork 使用时碰到的小问题 1,在使用orm访问数据库的相目里,也要引用EntityFrameWork.dll,否则无法使用orm 否则,编译错误 错误 5 "System.Data.Entity.DbSet`1<DbAccess.Entity.Dept>"不包含"Where"的定义,并且找不到可接受类型为"System.Data.Entity.DbSet`1<DbAccess.Entity.Dept>&qu

sizeof、strlen、字符串、数组,整到一块,你还清楚吗?

写在前面 sizeof.strlen.字符串.数组,提到这些概念,相信学过C语言的人都能耳熟能详,也能谈得头头是道,但是,在实际运用中,当这些内容交织在一起时,大家却不一定能搞地清清楚楚,本文的目的正是帮助大家将相关知识总结清楚. 正文 先看一段代码 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 void testchar(char str[]) 5 { 6 printf("%d %d\n", sizeof(str

Js中常用的字符串,数组,函数扩展

由于最近辞职在家,自己的时间相对多一点.所以就根据prototytpeJS的API,结合自己正在看的司徒大神的<javascript框架设计>,整理了下Js中常用一些字符串,数组,函数扩展,一来可以练练手,二来也锻炼下自己的代码能力.由于代码里面的注释自认为已经非常详细,所以就直接贴代码了. 1. 字符串扩展: ;(function() { var method, stringExtends = { /** * 删除字符串开始和结尾的空白 * @returns {string} */ stri

黑马程序员-OC加强学习日记-Foundation框架中的字符串和数组

------- ios培训. android培训.java培训.期待与您交流! ---------- 一.Foundation框架 1.概念:框架是由许多类.方法.函数.文档按照一定的逻辑组织起来的集合,以便使研发程序变得更容易. 为所有程序开发奠定基础的框架称为Foundation框架 2.使用:要想使用Foundation框架中的功能,包含它的主文件即可 #import <Foundation/Foundation.h> 二.NSString: 不可变字符串类   一个NSString对象

C#中定义数组--字符串及数组操作

一.一维: int[] numbers = new int[]{1,2,3,4,5,6}; //不定长 int[] numbers = new int[3]{1,2,3};//定长 二.多维 int[,] numbers = new int[,]{{1,2,3},{1,2,3}}; //不定长 int[,] numbers = new int[2,2]{{1,2},{1,2}}; //定长 三.例子 A:int[] mf1=new int[6]; //注意初始化数组的范围,或者指定初值; //包