char

分析Java中的length和length()

痴心易碎 提交于 2020-02-13 12:39:20
在不适用任何带有自动补全功能的IDE的情况下,我们怎么获取一个数组的长度?如何获取字符串的长度? 这里我们先举用实例去分析一下: int[] arr=new int[3]; System.out.println(arr.length);//使用length获取数组的长度 String srt=”abc”; System.out.println(str.length): //使用length()获取字符串的长度 那么我们问题是,为什么数组有length属性,而字符串有length()方法? 为什么数组有length属性? 我们已经知道数组是一个容器,它包含的是同一类型的固定数量的值,一旦数组被创建,它的长度就是固定的了,数组的长度我们可以作为final来理解,因此长度可以作为一个数组属性。 使用表达式创建数组方式如下,该方式指明了元素类型、数组的维度、以及至少一个维度的数组的长度。 该声明方式是符合要求的,因为他指定了一个维度的长度(该数组的类型为int,维度为2,第一维度的长度为3) int[][] arr = new int[3][]; 使用数组初始化的方式创建数组时需要提供所有的初始值。形式是使用{和}将所有初始值括在一起并用,隔开。 int[] arr = {1,2,3}; 大专栏 分析Java中的length和length() 注: 这里可能会有一个疑问

一种简单定长管理的内存池实现

痞子三分冷 提交于 2020-02-13 08:18:43
借鉴ucos消息队列中的实现,对内存池只提供信息的管理头部,由用户管理内存的分配与释放。 借用了STL中的管理思路 typedef union object_t { union object_t *next; //下一个对象 char data[1]; }object_t; 注意其为union类型,next和data复用 typedef struct ares_block { size_t object_size; //单个对象的大小 size_t block_size; //占用的空间总数 size_t count; //剩余有多少个对象 object_t * free_list; //空闲的对象块 char *data; //实际指向缓冲区位置 struct list_head list_block;//多个内存块 }mem_block_t; 基本的管理块 mem_block_t的接口函数。 void memblock_init(mem_block_t *block,size_t object_size,size_t buf_len,char *data); void memblock_destroy(mem_block_t *block); char *memblock_alloc(mem_block_t *block,size_t object_size); void

第七周.

梦想与她 提交于 2020-02-13 07:47:00
第六周作业 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineering-class1-2018/homework/2936 我在这个课程的目标是 掌握数组名作为函数参数的用法,理解指针、数组和地址之间的关系,理解指针和数组可以实现相同的操作 这个作业在那个具体方面帮助我实现目标 让我掌握数组名作为函数参数的用法,理解指针、数组和地址之间的关系 参考文献 c语言程序设计第三版 6-2 每个单词的最后一个字母改成大写 函数fun的功能是:将p所指字符串中每个单词的最后一个字母改成大写。(这里的“单词”是指由空格隔开的字符串)。 函数接口定义: void fun( char *p ); 其中 p 是用户传入的参数。函数将 p所指字符串中每个单词的最后一个字母改成大写。 裁判测试程序样例: #include <stdio.h> void fun( char *p ); int main() { char chrstr[64]; int d ; gets(chrstr); d=strlen(chrstr) ; chrstr[d] = ' ' ; chrstr[d+1] = 0 ; fun(chrstr); printf("\nAfter changing: %s\n",

词法分析器

女生的网名这么多〃 提交于 2020-02-13 05:30:07
1. 词法分析器 函数 skip_one_line: 跳过一行, 会在skip_comment中注释为//的时候调用 skip_comment: // 和 /**/ skip_blanks: 跳过空白行, 会在skip_comment处理完注释之后调用, 同时在get_next_token这个核心的词法分析器的接口函数中调用防止获取到的token含有空白字符 to_next_char: 将parser中的next_char_ptr指向的字符赋给cur_char, 并++next_char_ptr to_next_char_if: 和to_next_char类似, 返回类型为bool类型, 当nextchar是我们期望的值的时候调用to_next_char并返回true, 否则直接返回false peek_next_char: *parser->next_char_ptr peek_cur_char: parser->cur_char get_next_token: 给语法分析器调用的函数, 在get_next_token函数中主要由一个伪while循环(之所以是伪while循环, 是因为在while的结尾有return语句), 里面还有continue语句, 主要在遇到了注释, 调用了skip_comment之后continue继续获取Token, 因为注释并不是我们的token,

java之String、StringBuffer、StringBuilder

旧城冷巷雨未停 提交于 2020-02-13 04:31:08
一、String类: ①。构造字符串对象 常量对象:字符串常量对象是用双引號括起的字符序列。比如:"你好"、"12.97"、"boy"等。 字符串的字符使用Unicode字符编码,一个字符占两个字节 String类较经常使用构造方法: String s1 = new String(); String s2 = new String(String original); String s3 = new String(char[] a); String s4 = new String(char[] a,int startIndex,int count) String str = “abc”;与String str1 = new String(“abc”);的差别? str指向一个字符串常量,str1指向堆空间地址,堆空间指向一个字符串常量 String是一个final类,代表不可变的字符序列。字符串是不可变的。一个字符串对象一旦被配置。其内容是不可变的。 ②。 字符串对象操作 public int length():返回字符串的长度 public char charAt(int index):返回index索引位置的字符 public boolean equals(Object anObject):推断字符串是否相等 public int compareTo(String

C++学习笔记之输入、输出和文件

喜你入骨 提交于 2020-02-13 04:12:52
一、流的概念 数据从内存的一个地址移动到另一个地址称为数据流动——流操作 流操作是通过缓冲区(buffer)机制实现的。 缓冲区:内存的一块区域——用作文件与内存交换数据。 数据从文件中读出:文件 → 缓冲区 → 内存 将数据写入文件:内存 → 缓冲区 → 文件 为什么要使用缓冲区而不直接从文件中读取数据到内存或者直接有内存写入文件呢?我们的文件通常都存在磁盘中,程序从磁盘读取一个字符需要大量的硬件活动,速度非常慢。缓冲方法则从磁盘上读取大量信息,将这些信息存储在缓冲区,然后每次从缓冲区里读取一个字节,因为从内存中读取单个字节的速度比从硬盘上读取快很多,所以这种方法更快,也更方便。 说了这么多,只需知道缓冲方法更高效就可以了。 二、流库(stream library)介绍 使用继承的方法建立的输入输出类库,包含两个平行的基本类:streambuf和ios类,所有流类均以两者之一作为基类。 streambuf类提供对缓冲区的低级操作:设置缓冲区,对缓冲区指针操作,向缓冲区存取字符等 ios类及其派生类提供用户使用流类的接口 本文主要介绍ios,因为ios是编程中几乎必用的类,而streambuf类很少直接使用。下面图片来自网络: 三、文件打开与关闭 当程序中进行文件操作时,应加上头文件“fstream” 若要打开文件进行相应的操作,必须定义相应的流对象。如:ifstream in;

C++输入与输出(二)

只愿长相守 提交于 2020-02-13 04:12:33
6.fstream文件打开方式 ios::in 打开一个文件用于输入 ios::out 打开一个文件用于输出 ios::app 所有输出数据附加于文件的末尾 ios::ate 打开一个文件用于输出,如果文件已存在,移动到文件末尾数据可写入文件任何位置 ios::truct 如果文件已存在,丢弃文件内容(ios::out默认的方式) ios::binary 打开一个文件用于二进制输入输出 View Code #include<iostream> #include<fstream> using namespace std; int main() { fstream inout; char content[50]; inout.open("C:/score.txt",ios::out); //ios::out带覆盖的写入 inout<<"Danon 1991-01-01 100"; inout.close(); inout.open("C:/score.txt",ios::out|ios::app); //ios::app只追加,不覆盖 inout<<"Jake 1991-01-01 100"; inout.close(); inout.open("C:/score.txt",ios::in); while(!inout.eof()) { inout>>content; cout<

C++输入输出流学习笔记

给你一囗甜甜゛ 提交于 2020-02-13 04:12:16
自己之前在学习C++ 的时候从来没有系统地学习过输入输出流,眼看各种面试就要蜂拥而来,不禁一慌,赶紧拿出本C++ Primer Plus来看一下,自己写一些小程序测试一下。让自己对cin, cout有更深的认识。 1.cout进行输出 cout<< 可以识别C++中所有的基本类型,对应不同类型的参数会采用不同的原型。函数最终返回一个 ostream &即引用类型,所以输出可以通过<<连接起来,可以 cout<< xxx << xxx << xxx; ostream还为下面的指针类型定义了插入操作符函数: const signed char * ; const unsigned char * ; const char * ; void * 因为C++ 用指向字符串存储地址的指针来表示字符串,因此用cout来输出 char *, signed char *, unsigned char *,最终都会输出整个字符串 如果希望输出的是字符串的首地址需要将 char * 转换为 void * 来输出。 char * amount = "dozen"; cout<< amount; //输出dozen字符串 cout<<(void*)amount; //输出dozen字符串的首地址 ostream除了<< 操作之外还提供了put() 和write() 方法,前者用于显示字符,后者用于显示字符串

String 类

寵の児 提交于 2020-02-13 02:16:56
1. String 是什么    Java 中字符串是一个比较特殊的 对象 ,可以使用 new,也可以不通过 new 来创建字符串对象。    String s1 = new String("abc");     //在堆中   String str = "abc";          //在常量池中(ps: 常量池为方法区的一部分,字符串在常量池中保存一份,若没有则创建)   字符串是不可变量,一旦初始化就不可以被改变   String s1 = "abc";   s1 = s1 + "123";  //s1变量变了,并不是字符串变了     使用构造方法创建的对象都是在堆中      如果直接使用字符串常量创建对象:new String(String original),先在常量池中创建对象,然后在堆中创建对象;   如果是其它构造方法创建的字符串,先在堆中创建出来,并在常量池保存一个副本(如果常量池中没有的话) 2. String 常用的构造方法 构造方法 说明 String(char[] ch) 分配一个新的 String,使其表示字符数组参数中当前包含的字符序列。 String(char[] ch,int offset,int count) 分配一个新的 String,它包含取自字符数组参数一个子数组的字符。 String(byte[] bys,int off,int

面向对象程序设计寒假作业3

无人久伴 提交于 2020-02-13 00:57:09
这个作业属于哪个课程 2020面向对象程序设计张栋班 这个作业要求在哪里 面向对象程序设计寒假作业3 这个作业的目标 继续完成 作业二 的编程题、优化架构,思考代码的拓展性 作业正文 正文 其他参考文献 C语言:函数返回字符串的四种方法 我的 Github作业仓库 思考添加的功能 前两次的作业都完成了对两位数的功能实现,这一次就考虑对负数功能的实现,判断和循环目前是一点思路没有,想着看是否有大佬贡献一下代码来参考参考,因为前两次的主函数都过于复杂,所以这一次考虑着能否把主函数精简一下,代码就重新再打一遍,目标就是添加负数功能以及把主函数拆分成几个函数。在学习python的过程中,也越来越认识到写注释的重要性,特别是面对几百行几十天以前写的代码,没有注释看着就头痛。 首先是添加负数的功能 这里我将前两次作业的代码继续拆分成不同模块,而且现在的函数会在十五行以内完成,还是在这里提一下代码的格式、注释以及适当的空行会使程序更加美观,也更易读懂。 对输出这一简单的功能进行改进,在调用函数时首先调用的是 NumToCNJudge 函数,在这里的功能仅仅是对数字的符号进行判断,然后如果是正数的话会调用 PositiveNumToCN 函数,这个函数差不多是前两次作业直接copy过来的,如果是负数的话,就调用 NegativeNumToCN ,在函数中先输出一个“负”,然后调用