字符数组

Java学习34:字符串

倾然丶 夕夏残阳落幕 提交于 2020-02-01 00:10:43
从这一章开始,会有几篇文章介绍Java核心类。我自己也是一名大二在校生,在写这些文章的时候也参考了很多的书籍,但是依旧会有总结的不到位的地方。望指教,也可以私信我互相交流学习过程。 很多地方如有雷同,望留言我加以修改。 老规矩,升级从打怪开始。我们还是创建一个新项目,首先关闭原先的项目,然后点击new project,名字为FifthDemo,并且在src目录中创建包,名为com.fifth.strings。并创建我们的第一个java文件Demo01.java String 还记得我们在最开始介绍的数据类型吗,那还记得String是什么类型吗? 在Java中,编译器对String有特殊照顾,可以用"…"来表示一个字符串。 String s1="Hello!" 实际上字符串在String内部是通过一个char[]数组来表示的,因此还有一种写法: String s2 = new String(new char[] {'H', 'e', 'l', 'l', 'o', '!'}); 但是因为String太常用了,所以我们一般都习惯于第一种写法; Java字符串的一个重要特点就是字符串不可变。这种不可变性是通过内部的private final char[]字段,以及没有任何修改char[]的方法实现的。 我们来看一个例子: public class Demo01 { public

字符串,字符数组

孤人 提交于 2020-01-31 23:24:55
字符数组/字符串 字符类型 字符类型是能存字符的数据类型,除了存储 \(ASCII\) 表里面的数组以外,还能存储类似"\n","\t"的转义字符。比如:"\n"是换行,"\t"是制表符(不懂就自己试试) char a = '\n'; cout << 1 << a << 1; 这个程序的输出就是 1 1 也就是说 \(a\) 就代表了换行。记得 printf("%d\n",x)的含义吗?这里的\n 和前面的是同样的意思。 字符串 字符串是指一串字符,字符串的实质就是数组。需要特别注意的是,"txtxt"的字符串存储就是"txtxt\0",其中,\0代表一个字符串的结尾。 输入方法: 直接读入一个没有空格的字符串: string a; cin >> a; 字符数组 就是字符类型的数组。和字符串有什么区别呢?一点区别 字符数组基本不用 char a[1000]; string b; 以上两种声明方法有什么区别?基本没有。 char a[1000]; string b; b[0] = 'f'; 上面这种操作就是完全可以的。简单来讲:字符串类似字符数组。他们有两点不同之处: 字符数组有两种声明方式:char a[1000],string a 这两种声明方式微微不同。 char a[1000]声明的数组不支持a = "abcdefghi"这种赋值方式,但是他支持cin >> a这种读入方式

Java 常用IO流操作详解-34

限于喜欢 提交于 2020-01-31 17:37:17
1.基本概念 IO:Java对数据的操作是通过流的方式,IO流用来处理设备之间的数据传输,上传文件和下载文件,Java用于操作流的对象都在IO包中。 2.IO流的分类 图示:(主要IO流) 3.字节流 (1).字节流基类 1).InputStream InputStream:字节输入流基类,抽象类是表示字节输入流的所有类的超类。 常用方法: // 从输入流中读取数据的下一个字节 abstract int read() // 从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b中 int read(byte[] b) // 将输入流中最多 len 个数据字节读入 byte 数组 int read(byte[] b, int off, int len) // 跳过和丢弃此输入流中数据的 n个字节 long skip(long n) // 关闭此输入流并释放与该流关联的所有系统资源 void close() 2).OutputStream OutputStream:字节输出流基类,抽象类是表示输出字节流的所有类的超类。 常用方法: // 将 b.length 个字节从指定的 byte 数组写入此输出流 void write(byte[] b) // 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流 void write(byte[] b, int off,

C++字符串结束标识

安稳与你 提交于 2020-01-31 04:06:22
用一个字符数组可以存放一个字符串中的字符。如: char str[12]={‘I’,’ ‘,’a’,’m’,’ ‘,’h’,’a’,’p’,’p’,’y’}; 用一维字符数组str来存放一个字符串″I am happy″中的字符。字符串的实际长度(10)与数组长度(12)不相等,在存放上面10个字符之外,系统对字符数组最后两元素自动填补空字符′\0′。为了测定字符串的实际长度,C++规定了一个“字符串结束标志”,以字符′\0′代表。在上面的数组中,第11个字符为′\0′,就表明字符串的有效字符为其前面的10个字符。也就是说,遇到字符′\0′就表示字符串到此结束,由它前面的字符组成字符串。 对一个字符串常量,系统会自动在所有字符的后面加一个′\0′作为结束符。例如字符串″I am happy″共有10个字符,但在内存中它共占11个字节,最后一个字节′\0′是由系统自动加上的。 在程序中往往依靠检测′\0′的位置来判定字符串是否结束,而不是根据数组的长度来决定字符串长度。当然,在定义字符数组时应估计实际字符串长度,保证数组长度始终大于字符串实际长度。如果在一个字符数组中先后存放多个不同长度的字符串,则应使数组长度大于最长的字符串的长度。 说明:′\0′只是一个供辨别的标志。 如果用以下语句输出一个字符串: cout<<″ How do you do?″;

字符串的坑点和一些读入输出操作

此生再无相见时 提交于 2020-01-31 02:09:48
坑点: 1:头文件一定别忘了 2:字符数组和字符串区别很大, 有以下几个区别和相同之处: (1):他们默认输入都是从0开始。 (2):如果用字符串常量来初始化字符数组,那数组的实际长度会比一个一个输入多一个,用来存储‘\0’结束符。 比如如果定义一个字符数组 char c[]={"hh,233"}.那这个字符串的长度就是6. 而如果这样定义 char c[]="hh,233"那就是7,因为这是一个字符常量要加一位结束符。 多说一句,C++数组即使没有任何东西,所占的字节数却还是有的。 (3):最重要的一点,字符串不能用scanf读入,但是字符数组可以用scanf进行读入一整个字符数组。 比如以下这个例子: ``` char s1[100010]; string s2; scanf("%s",s1);//不能读入s2,且s1前不能加取地址符。为什么呢,因为数组有一个特点:他的数组名有两个功能,它既是数组名又是字符数组的第一位的地址。所以前面可以不加取地址符。 ``` C语言中没有专门的字符串变量,如果要将一个字符串存放在变量中,必须使用字符数组,即用一个字符型数组来存放一个字符串,数组中每一个元素存放一个字符。 <1> 定义: char c[10] 字符型与整型互相通用,因此 int c[10] 也可以定义字符数组。但由于两种类型分配字节不同, 用整型来定义会浪费空间,

Java复习——基础知识

烈酒焚心 提交于 2020-01-31 00:56:28
对于 作者曹胜欢的专栏:Java程序员从笨鸟到菜鸟 https://blog.csdn.net/csh624366188/category_9260964.html?utm_source=zlmf2019 基本小结 基础知识 Java以;结尾。 Java的注释有 : // 行注释 /* / 一行或多行注释 / * */ javadoc 注释 Java合法命名规范 : 大小写字母或者美元符号或者下划线开头,不能以数字开头,不能用关键字。类名一般大写开头,变量和方法一般小写开头。 Java的基本数据类型 :byte字节(8位)1字节 、boolean布尔(1位)、char字符(16位)两字节、short短整型(16位)两字节、int整形(32位)4字节、long长整型(64位)8字节、float单精度浮点型(32位)、double双精度浮点型(64位) Java的特殊引用类型 : String 引用类型 :引用类型是一个对象类型的,他的值指向内存空间的引用,就是地址,所指向的内存中保存着变量所表示的一个值或一组值。 定义变/常量和变量的初始化 :常量需要用final 修饰 ,约定常量 一般全部使用大写字母。 switch运算符 : switch (expr) expr 必须是与int类型兼容的类型,即为byte,short,char,int其中的一个。 流程跳转语句-break

C/C++基础----string, vector, array

二次信任 提交于 2020-01-30 15:16:09
1 using声明 方便使用命名空间中的成员,不用每次xxx::yyy 头文件不应该包含using声明(不经意间包含了一些名字) 2 string 表3.1:初始化string对象的方式 string s1 默认初始化,s1是空串 string s2(s1) s2是s1的副本 string s2 = s1 等价于s2(s1) string s3(“value”) s3是字面值”value”的副本,除了最后空格符 string s3 = “value” 等价于s3(“value”) string s4(n, ‘c‘) s4初始化为有连续n个字符c组成的串 表3.2:string的操作 os<<s 将s写到输出流os当中,返回os is>>s 从is中读取字符串赋给s,遇到空白结束,返回is getline(is, s) 从is中读取一行赋给s,返回is s.empty() s为空返回true s.size() 返回s中字符的个数 s[n] 返回s中第n个字符的引用,n从0开始计起 s1+s2 返回s1和s2链接后的结果 s1=s2 用s2的副本代替s1中原来的字符 s1==s2 s1!=s2 <, <=, >, >= string对象会自动忽略开头的空白(即空格符、换行符、制表符)并从第一个真正的字符开始读起,知道遇到下一处空白为止。 getline保留输入时的空白符

Python 简单入门指北(一)

↘锁芯ラ 提交于 2020-01-30 08:50:45
Python 简单入门指北(一) Python 是一门非常容易上手的语言,通过查阅资料和教程,也许一晚上就能写出一个简单的爬虫。但 Python 也是一门很难精通的语言,因为简洁的语法背后隐藏了许多黑科技。本文主要针对的读者是: 毫无 Python 经验的小白 有一些简单 Python 经验,但只会复制粘贴代码,不知其所以然的读者 觉得单独一篇文章太琐碎,质量没保证,却没空读完一本书,但又想对 Python 有全面了解的读者 当然, 用一篇文章来讲完某个语言是不可能的事情,我希望读完本文的读者可以: 对 Python 的整体知识结构形成初步的概念 了解 Python 特有的知识点,比如装饰器、上下文、生成器等等,不仅会写 Demo,还对背后的原理有一定了解 避免 C++/Java 等风格的 Python 代码,能够写出地道的 Python 代码 能够熟练的使用 Python 编写脚本实现日常的简单需求,能够维护小型 Python 项目,能够阅读较复杂的 Python 源码 如果以上介绍符合你对自己的定位,在开始阅读前,还需要明确几点: 本文不会只介绍用法,那样太肤浅 本文不会深入介绍某个知识点,比如分析源码等,那样太啰嗦,我希望做一名引路人,描述各个知识点的概貌并略作引申,为读者指出下一步的研究方向 代码注释非常重要,一定要看,几乎所有的代码段都可以执行,强烈建议手敲一遍! 0.

C:字符数组 与 字符串

旧时模样 提交于 2020-01-29 00:27:06
字符串与字符数组 C语言中没有字符串这种数据类型,可以通过char的数组来替代; 字符串一定是一个char的数组,但char的数组未必是字符串; 数字0(和字符‘\0’等价)结尾的char数组就是一个字符串,但如果char数组没有以数字0结尾,那么就不是一个字符串,只是普通字符数组,所以字符串是一种特殊的char的数组。 #include <stdio.h> int main() { char c1[] = { 'c', ' ', 'p', 'r', 'o', 'g' }; //普通字符数组 printf("c1 = %s\n", c1); //乱码,因为没有’\0’结束符 //以‘\0’(‘\0’就是数字0)结尾的字符数组是字符串 char c2[] = { 'c', ' ', 'p', 'r', 'o', 'g', '\0'}; printf("c2 = %s\n", c2); //字符串处理以‘\0’(数字0)作为结束符,后面的'h', 'l', 'l', 'e', 'o'不会输出 char c3[] = { 'c', ' ', 'p', 'r', 'o', 'g', '\0', 'h', 'l', 'l', 'e', 'o', '\0'}; printf("c3 = %s\n", c3); return 0; } 字符串的初始化: #include <stdio.h> //

通过create_string_buffer、create_unicode_buffer让C语言具备修改字符串的能力

自作多情 提交于 2020-01-28 21:50:02
字符串的修改 我们知道C中不存在字符串这个概念,python中的字符串在C中也是通过字符数组来实现的。我们说在C中创建一个字符数组有两种方式: char *s1 = "hello world"; char s2[] = "hello world"; 这两种方式虽然打印的结果是一样的,并且s1、s2都指向了对应字符数组的首地址,但是内部的结构确是不同的。 1.char *s1 = "hello world";此时这个字符数组是存放在静态存储区里面的,程序编译的时候这块区域就已经确定好了,静态存储区在程序的整个运行期间都是存在的,主要用来存放一些静态变量、全局变量、常量。因此s1只能够访问这个字符数组,却不能够改变它,因为它是一个常量。而char s2[] = "hello world";,这种方式创建的字符数组是存放在栈当中的,可以通过s2这个指针去修改它。 2.char *s1 = "hello world";是在编译的时候就已经确定了,因为是一个常量。而char s2[] = "hello world";则是在运行时才确定。 3.char *s1 = "hello world";创建的字符数组存于静态存储区,char s2[] = "hello world";创建的字符数组存储于栈区,所以s1访问的速度没有s2快。 所以我们说 char *s