C++学习之定义string类

在线学习好工作https://www.360docs.net/doc/6d18867344.html,/

C++学习之定义string类

string类使用起来比较方便,在本课程的开始我们就学习了string类。之所以那么早就学习string,就是希望大家能够用string代替c风格的字符串。目前为止,我们学习了如何定义类,以及如何为类定义运算符重载函数。今天我们就来定义一个类似于string功能的自己的String类。

各个函数

1.构造函数

String(const char *s); //用c字符串s初始化

String(int n,char c); //用n个字符c初始化

2.拷贝和赋值

String& String(String& str);

const String& operator=(String& str);

3.析构函数

~String();

4.下标访问

char &operator[](int n);

char &at(int n)const;

5.String类提供的方法

int size()const; //返回当前字符串的大小,string内部不会在我们每一次的字符串连接的时候都会分配空间,它会多分配一些内存,下次连接时的字符串小于剩下的空间它就不用再为这个字符串分配另外的空间了。它分配的所有空间就是size,而字符串的实际长度length

int length()const; //返回当前字符串的长度

bool empty()const; //当前字符串是否为空

6.重载流插入和提取运算符

istream& operator>>(istream& input, String& str);

ostream& operator<<(ostream& output, String& str);

7.连接两个字符串

String &operator+=(String &s);

8.字符串比较

bool operator==(const String &s1,const String &s2)const;

int compare(const string &s) const;//比较当前字符串和s的大小

在我们这里实现的string类是比较简单的,C++标准模板库里面的string类的方法是非常非常多的,而且是非常非常复杂的。这里我们仅仅是为了给大家演示一下string类内部大概的实现方法,以及复习大家前段事件所学习的内容。

文章来源:麦子学院

原文链接:https://www.360docs.net/doc/6d18867344.html,/wiki/cplus/class/

C语言的类和对象

C语言的类和对象 【类实现了C++面向对象程序设计的基础,我们使用类来定义对象的属性,类是 C++封装的基本单元。】 一、----- 类 使用关键字class创建类,一个类声明定义了一个连接代码和一个数据的新类型,这个新的类型又可以用来声明该类的对象。因此,类又是逻辑逻辑抽象概念,儿对象是物理存在的,也就是说对象是类的实例。 类的声明语法上和结构相似。 [一下是完整的类的形式] class class_name { private data and functions access_specifier: data and functions access_specifiter: data and functions //…….. access_specifier:是 data and functions }object_list; 其中,object_list是任选项,如过存在,他声明类的对象。access_specifier为下面的三个关键字之一: Public private protected 默认时,在类声明的函数和数据属于该类私有,只能被该类的成员访问。如果使用,pubilc访问限定符号,函数和程序就可以被其他部分访问。Protected访问限定符,仅在涉及继承的时候才需要(十五章了解)。访问限定符已经使用,其作用就保持到遇到别的访问限定符或者达到类声明的结束处。 在类声明内可以任意改变访问说明符号,对于某些声明,可以转换位public,然后再转换成private。 [如下所述] /******************************* ··构造函数和析构函数学习··· *******************************/ //Using a constructor and destructor. /******************************* 声明C++ 程序头文件 *******************************/ #include #include #include #include /******************************* ·名字空间:组织大型的程序结构·

实验3 类和对象

实验3 类和对象的创建与使用 一、实验目的 1、掌握类的定义和对象的创建; 2、掌握构造方法的作用、格式及重载; 3、掌握修饰词对成员存取权限的限制。 4、掌握实例成员、类成员的定义和使用方法。 二、实验内容 1、定义储蓄账户类,并创建对象模拟银行基本操作。 2、两游戏角色决斗。给定二个不同的角色,判定交手的胜负关系。(选做) 3、设计学生类、学校类、录取类,根据学生成绩和学校分数线,判断是否录取。 三、实验步骤 说明:请将第1,3题代码写入实验报告实验步骤处。 1、模拟银行账户功能。 编写程序,模拟银行账户功能。要求如下: 属性:账号、姓名、地址、存款余额、最小余额。 方法:存款、取款、查询。 根据用户操作显示储户相关信息。 如存款操作后,显示储户原有余额、今日存款数额及最终存款余额。 取款时,若取款成功,显示信息提示;若最后余额小于最小余额,拒绝取款,并显示信息提示。具体显示信息可据方便性原则自拟。 public class AccountOperation { public static void main(String [] args) { Account account1=new Account("650101","柳眉","天河学院",800.00); Account account2=new Account("650102","郑杰","天河学院",200.00); account1.transfer(account1,account2,300.0); account1.deposit(300.5); account1.withdraw(200); account1.withdraw(300); account1.query(); System.out.println(account1.toString()); //System.out.println(https://www.360docs.net/doc/6d18867344.html,); error!! } } class Account { private String account; private String name; private String address; private double balance;

C++string类型总结

对C++中string类型的总结 string类对象的构造 简化构造函数原型如下(注意,为了简便,把模板中最后一个默认参数省略了): 1: explicit basic_string(); 2: string(const char *s); 3: string(const char *s, size_type n); 4: string(const string& str); 5: string(const string& str, size_type pos, size_type n); 6: string(size_type n, E c); 7: string(const_iterator first, const_iterator last); string对象的操作 字符串比较 支持六种关系运算符(==、!=、>、>=、<、<=),其采用字典排序策略(与C中字符串比较策略完全一样)。这六个关系运算符是非成员的重载运算符。而这些 运算符都支持三种操作数组合:string op string、string op const char*、cons t char* op string(其中op是前面六种关系运算符中任意一种)。解释:提供运算 符的三种重载版本主要是从效率角度考虑的,其避免了临时string对象的产生。 另外,string类还提供了各种重载版本的成员函数compare来比较,简化函数原型为: 1: int compare(const string& str) const; 2: int compare(size_type p0, size_type n0, const string& str); 3: int compare(size_type p0, size_type n0, const string& str, si ze_type pos, size_type n); 4: int compare(const char* s) const; 5: int compare(size_type p0, size_type n0, const char* s) const; 6: int compare(size_type p0, size_type n0, const char* s, size_t ype n) const; 返回值:如果调用该函数的对象的比较序列小于操作数比较序列,则返回负数; 若相等,则返回0;否则,返回正数。

类的定义和对象的创建

实验二类的定义和对象的创建 实验目的 1、学习定义类和使用类 2、学习创建的对象和使用对象 实验内容 1、定义一个Student类。其中定义有“学号”“姓名”“班级”“性别”“年龄”等属性,定 义一个无参数的构造器和至少一个有参数的构造器,定义“获得学号”“获得姓名”“获得班级”“获得性别”“获得年龄”“修改年龄”等方法。另外定义一个方法: public String toString( ) 把Student类的对象的所有属性信息组合成一个字符串,并检验这个功能的程序体现。 public class Student { private int 学号; private String 姓名; private String 班级; private char 性别; private int 年龄; public Student(int a, String b, String c, char d, int e) { 学号= a; 姓名= b; 班级= c; 性别= d; 年龄= e; } public Strudent() { this(0, "张三" ,"软件0901" ,'男', 19); } public int get学号() { return 学号; } public String get姓名() { return 姓名; } public String get班级() { return 班级; } public char get性别() { return 性别; } public int get年龄()

{ return 年龄; } public void set学号(int a) { 学号=a; } public void set姓名(String a ) { 姓名=a; } public void set班级(String a) { 班级= a; } public void set性别( char a) { 性别= a ; } public void set年龄(int a) { 年龄= a; } public String toString() { return "该学生的学号为"+ 学号+ " 姓名为"+姓名+" 班级为"+班级+ " 性别为" +性别+ " 年龄为" +年龄"; } } 2、编程实现圆类,其中包括计算圆周长和面积的方法,并测试方法的正确性。 public class Yuan { private double X, Y, R; public Yuan(double a, double b, double c) { X=a; Y=b; R=c; } public double MianJi() { return 3.1416*R*R; } public double ZhouChang() { return 2*3.1416*R; } public static void main(String[] args) { Yuan s=new Yuan(2,3,4); System.out.println("该圆的面积是"+ s.MianJi()); System.out.println("该圆的周长是"+ s.ZhouChang()); } }

C++中字符数组与string的相互转换及字符串拼接(字符串知识点总结)

【字符数组转化成string类型】 Char ch[]=”ABCDEFG” String str(ch);//也可string str=ch; 或者 Char ch[]=”ABCDEFG” String str; Str=ch;//在原有基础上添加可以用str+=ch; 【string类型转换为字符数组】 Char buf[10] String str(“ABCDEFG”); Length=str.copy(buf,9); Buf[length]=’\0’; 或者 Char buf[10]; String str1(“ABCDEFG”); strcpy(buf,str1.c_str());//strncpy(buf,str1.c_str(),10); 【字符串拼接】 一、string类字符串 重点:函数append的用法: (1)向s1-string的后面加s2-string (1个参数)

s.append(s2); 或s1+=s2; 也可直接将字符串拼接:如 string s=“hello”; s.append(" world");//“hello"后面拼接”world" (2)(2个参数) 1.向s1-string的后面加s2-string的一部分 s1.append(s2,n); // 把字符串s2的前n个字符连接到当前字符串结尾 2.向string后面加多个字符 string s1 = "hello "; s1.append(4,’!’); //在当前字符串结尾添加4个字符! s1 = “hello !!!”; (3).向string的后面加string的一部分(3个参数) 1.string s1 = "hello ", s2 = "beautiful world "; s1.append(s2, 11, 5); //把字符串s2中从11开始的5个字符连接到当前字符串的结尾得s1 = “hello world”; 2.string s1 = "hello ", s2 = “beautiful world”; s1.append(s2.begin()+11, s2.end()); //把s2的迭代器begin()+11和end()之间的部分连接到当前字符串的结尾得“hello world”; 二、char数组类字符串 重点:strcat()函数,该函数接受两个字符串作为参数,该函数把第2个字符串

JAVA实验报告四(实现String类)

JA V A实验报告实验四运用JavaFx实现时钟动画 班级:计算机科学与技术1306 学号: 00 姓名:王雨思 指导教师:鲁鸣鸣 2014 年 12 月 1 日

目录 一.概述 (6) 二.总体方案设计 (7) 三.详细设计 (8) 四.程序的调试与运行结果说明 (9) 五.课程设计总结 (10) 六.后记 (11) 七.附录 (12) 参考文献 (13)

一概述 1.课程设计的目的 了解和掌握String类的实现原理 2.课程设计的要求 基于ArrayList实现可以深度复制(Deep Copy)的栈结构。1.首先用ArrayList实现栈结构 2.接着将第1步实现的栈通过Clonable接口实现深度复制 3.课程设计的主要设计思想 基于ArrayList实现可以深度复制(Deep Copy)的栈结构。二总体方案设计 编写程序实现MyString类的下列操作: public MyString(char[] chars); public char charAt(int index); public int length(); public MyString substring(int begin, int end); public MyString toLowerCase(); public boolean equals(MyString s); public static MyString valueOf(int i); public int compare(String s); public MyString substring(int begin); public MyString toUpperCase(); public char[] toChars();

实验3 类的定义、对象的建立与使用

实验报告_实验3 类的定义、对象的建立与使用(学 生学号_姓名) 实验目的: 1、理解C++中class与struct的区别; 2、掌握类的定义以及成员函数的定义方法; 3、掌握对象的定义和对象成员的访问方式; 4、熟悉this指针的基本用法。 实验内容 二、((基础题)请按照下列要求定义一个Clock时钟类,并创建对象,再调用相应方法: 程序代码: //日期类的应用 #include using namespace std; class Clock // 定义日期类 { public: // 定义公有成员函数 void setTime(int h, int m, int s); void showTime(); private: // 定义私有数据成员 int hour; int minute;

int second; }; // 类定义体的结束 //类实现部分 void Clock::setTime(int h, int m, int s) { hour = h; minute = m; second = s; } void Clock::showTime() { cout << "设置时间为" << hour <<":"<< minute <<":"<< second << endl; } int main() { Clock now; now.setTime(8,30, 0); now.showTime(); return 0; } 三、(基础题)请按要求,编写程序(请将类的定义、成员函数的实现、类的使用分开): rect.h代码: #include

编写strcpy函数和类String的构造函数、析构函数、赋值函数和重载运算符函数

编写strcpy函数和类String的构造函数、析构函数、赋值函数和重载运算符函数 已知strcpy函数的原型是 char *strcpy(char *strDest, const char *strSrc); 其中strDest是目的字符串,strSrc是源字符串。 (1)不调用C++/C的字符串库函数,请编写函数strcpy char *strcpy(char *strDest, const char *strSrc); //将源字符串加const,表明其为输入参数 { assert((strDest!=NULL) && (strSrc !=NULL)); // 2分 //对源地址和目的地址加非0断言 char *address = strDest; // 2分//为了实现链式操作,将目的地址返回 while( (*strDest++ = * strSrc++) != …\0? ) // 2分 NULL ; return address ; // 2分 } (2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值? 答:为了实现链式表达式。// 2分 例如int length = strlen( strcpy( strDest, “hello world”) ); 二、网上广泛流传的,也是摘自林锐的 http://www.blog.sh/user3/skyflowing/archives/2006/60452.html 题目: 已知strcpy函数的原型是: char * strcpy(char * strDest,const char * strSrc); 1.不调用库函数,实现strcpy函数。 2.解释为什么要返回char *。

java对象转换String类型的三种方法

北大青鸟中关村 java对象转换String类型的三种方法在很多情况下我们都需要将一个对象转换为String类型。一般来说有三种方法可以实现:Object.toString()、(String)Object、String.valueOf(Object)。下面对这三种方法一一分析 一、采用Object.toString() toString方法是https://www.360docs.net/doc/6d18867344.html,ng.Object对象的一个public方法。在java中任何对象都会继承Object 对象,所以一般来说任何对象都可以调用toString这个方法。这是采用该种方法时,常派生类会覆盖Object里的toString()方法。 但是在使用该方法时要注意,必须保证Object不是null值,否则将抛出NullPointerException 异常。 二、采用(String)Object 该方法是一个标准的类型转换的方法,可以将Object转换为String。但是在使用该方法是要注意的是需要转换的类型必须是能够转换为String的,否则会出现CalssCastException异常错误。 代码代码如下: Object o = new Integer(100); String string = (String)o; 这段程序代码会出现https://www.360docs.net/doc/6d18867344.html,ng.ClassCastException: https://www.360docs.net/doc/6d18867344.html,ng.Integer cannot be cast to https://www.360docs.net/doc/6d18867344.html,ng.String。因为将Integer类型强制转换为String类型,无法通过。 三、String.valueOf(Object) 上面我们使用Object.toString()方法时需要担心null问题。但是使用该方法无需担心null值问题。因为在使用String.valueOf(Object)时,它会判断Object是否为空值,如果是,则返回null。下面为String.valueOf(Object)的源码: 代码代码如下: public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString(); } 从上面我们可以看出两点:一是不需要担心null问题。二是它是以toString()方法为基础的。但是一定要注意:当object为null时,String.valueOf(object)的值是字符串对象:"null",而不是null!!!

类和对象练习题

类和对象 一、选择题 1、下面对方法的作用描述不正确的是:( d ) A、使程序结构清晰 B、功能复用 C、代码简洁 D、重复代码 2、方法定义的变量:( b ) A 、一定在方法所有位置可见B、可能在方法的局部位置可见 C、在方法外可以使用 D、在方法外可见 3、方法的形参:(a) A、可以没有 B、至少有一个 C、必须定义多个形参 D、只能是简单变量 4、方法的调用:(c) A、必须是一条完整的语句 B、只能是一个表达式 C、可能是语句,也可能是表达式 D、必须提供实际参数 5、return 语句:( d) A、不能用来返回对象 B、只可以返回数值 C、方法都必须含有 D、一个方法中可以有多个return 语句 6、void 的含义:(d) A、方法体为空 B、方法体没有意义 C、定义方法时必须使用 D、方法没有返回值 7、main()方法的返回类型是:( c ) A 、boolean B、int C、void D、static 8、方法重载所涉及的方法:( a ) A、有相同的名字 B、参数个数必须不同 C、参数类型必须不同 D、返回类型必须不同 9、下面关于类和对象之间关系的描述,正确的是( c ) A、联接关系B、包含关系C、具体与抽象的关系D、类是对象的具体化 10、下面关于java中类的说法哪个是不正确的( c ) A、类体中只能有变量定义和成员方法的定义,不能有其他语句。 B、构造方法是类中的特殊方法。 C、类一定要声明为public的,才可以执行。

D、一个java文件中可以有多个class定义。 11、下列哪个类声明是正确的( d) A、public void H1{…} B 、public class Move(){…} C、public class void number{} D、public class Car{…} 12、下面的方法声明中,哪个是正确的(c) A、public class methodName(){} B、public void int methodName(){} C、public void methodName(){} D、public void methodName{} 13、下述哪些说法是不正确的?( b ) A、实例变量是类的成员变量 B、实例变量是用static关键字声明的 C、方法变量在方法执行时创建 D、方法变量在使用之前必须初始化 14、下面对构造方法的描述不正确是( b)。 A、系统提供默认的构造方法 B、构造方法可以有参数,所以也可以有返回值 C、构造方法可以重载 D、构造方法可以设置参数 15、定义类头时,不可能用到的关键字是( b)。 A、class B、private C、extends D、public 16、下列类头定义中,错误的是( )。 A、public x extends y {...} B、public class x extends y {...} C、class x extends y implements y1 {...} D、class x {...} 17、设A为已定义的类名,下列声明A类的对象a的语句中正确的是( ) 。 A、float A a; B、public A a=A( ); C、A a=new int( ); D、static A a=new A( ); 18、设i , j为类X中定义的int型变量名,下列X类的构造方法中不正确的是( a )。 A、void X(int k ){ i=k; } B、X(int k ){ i=k; } C、X(int m, int n ){ i=m; j=n; } D、X( ){i=0;j=0; } 19、有一个类A,以下为其构造方法的声明,其中正确的是

【实验5】c++MyString类实现

ccnu_hupo_cpp_class_tst6exercise2_by:lele_2013_10_30 new不忘delete Design the string class in the C++ library by providing your own implementation for the following functions (name your class MyString): MyString();//构造 MyString(const char* cString);//地址不能变 char at(int index) const;//输入数组下标,返回字符 int length() const;//长度 void clear();//清空len=0 bool empty() const;//是否清空?len不变 int compare(const MyString& s) const;// int compare(int index, int n, const MyString& s) const; void copy(char s[], int index, int n); char* data() const; int find(char ch) const; int find(char ch, int index) const; int find(const MyString& s, int index) const; */ #include #include using namespace std; class MyString { public: MyString(); MyString(const char* cString); char at(int index) const;// int length() const; void clear(); bool empty() const; int compare(const MyString& s) const; int compare(int index, int n, const MyString& s) const; void copy(char s[], int index, int n); char* data() const; int find(char ch) const; int find(char ch, int index) const; int find(const MyString& s, int index) const; ~MyString()

C面向对象程序设计习题 类与对象

类和对象(一) 知识点: 1.类与对象的概念,及两者的关系? 2.类定义的格式,对象定义的格式,访问对象的成员的格式 3.类中成员访问权限有哪几种,它们的特点? 4.如何对对象进行初始化? 5.构造函数与析构函数的特点,构造函数在哪些情况下被系统自动调用,析构函数什么情况下被调用;存在虚基类的派生类构造函数调用顺序? 6.缺省构造函数的特点 7.拷贝构造函数的功能与特点 8.成员函数与内联函数的区别 9.静态成员的概念与作用 10.静态成员函数调用格式 11.什么是友元,友元的作用 12.作用域运算符的功能是什么?它的使用格式如何? 13.满足成员函数重载的条件 作业题 一、选择填空 1.在下列关键字中,用以说明类中公有成员的是( )。 A .public;B.private;C.protected;D.friend。 2.下列的各类函数中,( )不是类的成员函数。 A.构造函数;B.析构函数;C.友员函数;D.拷贝初始化构造函数。 3.作用域运算符的功能是( )。 A.标识作用域的级别的; B.指出作用域的范围的;

C.给出作用域的大小的; D.标识某个成员是属于哪个类的。 4.( )是不可以作为该类的成员的。 A.自身类对象的指针; B.自身类的对象; C.自身类对象的引用; D.另一个类的对象。 5.( )不是构造函数的特征。 A.构造函数的函数名与类名相同; B.构造函数可以重载; C.构造函数可以重载设置缺省参数; D.构造函数必须指定类型说明。 6.( )是析构函数的特征。 A.一个类中能定义一个析构函数; B.析构函数名与类名不同; C.析构函数的定义只能在类体内; D.析构函数可以有一个或多个参数。 7.通常的拷贝初始化构造的参数是( )。 A.某个对象名; B.某个对象的成员名; C.某个对象的引用名; D.某个对象的指针名。 8.关于成员函数特征的下述描述中,( )是错误的。

各个类及其方法的实现

客户端:(六个类) ChatClient、Denglu、Hall、HUIQICC 、Panecc、Registry 功能: 1、ChatClient: * 该类主要关于客户端与服务器之间的通信,包括聊天信息、悔棋信息、认输信息、退出信息、注册信息、登陆信息等等* 通过该类还调用了大量的Panecc类的方法,实现通信信息在界面上的实现 * * 主要方法是Connect(),通过调用该方法建立与服务器端的连接,在该方法里,new了一个Thread对象, * 同时架设了经过初步包装基本的管道(DataInputStream和DataOutputStream)。接下来便开始接收服务器端 * 发来的消息了,通过简单的协议,实现不同种类消息的接收和解析,该协议便是一串数字(int类型), * 在发送消息方法里先写进一串数字,再写入需要发送的消息内容。同理,接收消息时先读取数字,再根据不同的数字 * 解析出不同的消息种类。 * 除了Connect()方法之外,还有很多信息的发送方法,比如

聊天信息(SendMessage(String message))、登陆信息(SendLogin(String name,String key)) * 、注册信息(SendZhuce(String name,String pass))、发送猜先信息(sendcai(int a))等等 2、Denglu: * 该类是客户端的主驱动类,在该类中声明并初始化了ChatClient类的对象cc, * 并通过该对象调用了ChatClient类的许多方法; * 该类主要是关于登陆界面,并实现了相关监听; * 该类还存在一个内部类--paneLogin ,这个内部类主要是画界面,监听功能在主类中实现 * * 通过该类,将用户信息,发送给服务器,再由服务器连接数据库,判断登陆的相关信息。 3、Hall: * 该类是关于登陆大厅,存在一个内部类--hallt,该内部类

JAVA类与对象的创建

试验四 类和对象的创建 一.类的定义 类是组成Java程序的基本要素。类封装了一类对象的状态和方法。类用来定义对象的模板。 类的实现包括两部分:类声明和类体。基本格式为: 修饰符class类名[extends父类名]{ /*类体的内容*/ } 1.类声明 以下是一个类声明的例子。 class People成为类声明,People是类名。习惯上,类名的第一个字母大写,但这不是必须的。类的名字不能是Java中的关键字,要符合标识符规定,即类的名字可以由字母、下划线、数字或美元符号组成,并且第一个字母不能是数字。但给类命名时,最好遵守下列规则: (1)如果类名使用拉丁字母,那么名字的首写字母使用大写字母,如Hello、Time、People等。 (2)类名最好容易识别,当类名由几个“单词”复合而成时,每个单词的首写字母使用大写,如BeijingTi me、AmericanGame、HelloChina等。 2.类体 编写类的目的是为了描述一类事物共有的属性和功能,描述过程由类体来实现。类声明之后的一对大括号“{”、“}”以及它们之间的内容称为类体,大括号之间的内容称为类体的内容。 类体的内容由两部分构成:一部分是变量的定义,用来刻画属性;另一部分是方法的定义,用来刻画功能。 下面是一个类名为“Trapezia”的类,类体内容的变量定义部分定义了4个float类型变量:top、bottom、h igh和laderArea,方法定义部分定义了两个方法:“getArea”和“setHigh”。

二.对象 1.对象的创建 创建一个对象包括对象的声明和为对象分配内存两个步骤。 (1)对象的声明。 一般格式为: 类的名字对象名字; 如: 这里People是类的名字,zhubajie是我们声明的对象的名字。 (2)为声明的对象分配内存。 使用new运算符和类的构造方法为声明的对象分配内存,如果类中没有构造方法,系统会调用默认的构造方法(你一定还记得构造方法的名字必须和类名相同这一规定),如: 例1: 「注」如果类里定义了一个或多个构造方法,那么Java不提供默认的构造方法。 2.对象的使用 对象不仅可以改变自己变量的状态,而且还拥有了使用创建它的那个类中的方法的能力,对象通过使用这些方法可以产生一定的行为。 通过使用运算符“.”,对象可以实现对自己的变量访问和方法的调用。 例2:

类与对象的复习与练习

一选择题 1.下面方法定义中,正确的是: A)int x(int a,b){return a-b;} B)double x(int a,int b){int w;w=a-b;} C)double x(a,b){return b;} D)int x(int a,int b){return a-b;} 2.下面方法定义中,不正确的是: A)float x(int a,int b){return a-b;} B)int x(int a,int b){return a-b;} C)int x(int a,int b){return a*b;} D)int x(int a,int b){return 1.2*(a-b);} 3下面方法定义中,正确的是: A)int x(){char ch='a';return (int)ch;} B)void x(){return true;} C)int x(){return true;} D)int x(int a,b){return a-b;} 4设X 、Y 均为已定义的类名,下列声明类X的对象x1的语句中正确的是? X x1=new X(); B)X x1= X ( ); C)X x1=new Y( ); D)int X x1; 5设A为已定义的类名,下列声明并创建A 类的对象a的语句中正确的是?

A)A a=new A( ); B)public A a=A( ); B)C)A a=new class( ); D)a A; 6下面类的定义中结构正确的是? A)class A B)class 2A C)int class A D)public class A () 7下面关于类的结构的说法正确的是? A)类只能包含一个构造方法 B)类可以没有属性 C)类只能包含方法 D)类只能包含属性 8下面哪个关键字在定义类头时用不到? A)class B)public C)extends D)int33 9 this在程序中代表的是? A)类的对象 B)属性 C)方法 D)父类 10下列对构造方法的调用方式的描述中正确的是? A)使用new调用 B)使用类名调用 C)使用对象名调用

String类的基本特点

1、课程名称:String类的基本特点 2、知识点 2.1、上次课程的主要知识点 数组 2.2、本次预计讲解的知识点 1、String类的两种实例化方式的区别; 2、String类对象的比较; 3、String类对象的使用分析。 3、具体内容(★★★★★) 3.1、String类的两种实例化方式 String并不是一个基本数据类型,它本身属于一个类,但是这个类在设计的过程之中加入了一些Java自己的特殊支持,

所以对于这个类的对象实例化方式就有两种形式: ·直接赋值:String 对象= "内容" ; ·构造方法:public String(String s)。 范例:使用直接赋值 范例:利用构造方法 至少现在通过执行结果来讲,String类的两种实例化方式都是可用的。 3.2、String的相等比较 如果说现在有两个int型的变量,那么要进行相等的判断,则直接使用“==”即可。 范例:两个int比较 发现两个利用直接赋值实现的程序,那么使用“==”的时候可以正常的进行相等判断。 但是如果现在将同样的操作形式用在String上呢? 范例:观察String的比较

通过现在的执行可以发现一个非常严重的问题,此时字符串的内容实际上都是相同的,而在使用“==”比较之后发现有比较结果是false,那么为什么呢? 所以发现在程序中如果使用“==”比较的只是两个对象(任意的引用类型)堆内存地址数值,属于数值内容的比较,并不是堆内存中保存内容的比较,那么要想进行String对象内容的比较则可以利用String类中提供的一个方法完成:·字符串比较(暂时将此方法进行修改):public boolean equals(String str)。 范例:利用equals()实现字符串内容的比较 由于内容是可控的因素,而地址是不可控的因素,所以在日后的开发之中,只要是字符串的比较都使用equals()方法完成,绝对不可能出现“==”。 面试题:请解释在String比较中“==”与“equals()”的区别? ·“==”:是Java本身提供的关系运算符,可以进行数值比较,如果用在String上表示对象内存地址数值比较; ·“equals()”:是String类自己定义的方法,用于进行字符串内容的比较。 3.3、String匿名对象 任何的编程语言都不会提供有字符串这一数据类型。字符串的描述在很多语言之中都使用字符数组表示。而在Java 的设计之处为了解决这样的问题,专门提供了一个String类来进行描述。但是随着发展,为了能够让程序变得更加的易于开发,所以在Java里面也提供双引号声明的数据,而这些数据,在Java中并不是普通的变量,而是属于String类的匿名

实验二 类与对象

实验二类与对象 一、实验目的 1、学习类与对象的定义,掌握类与对象的使用方法。 2、学习数据成员与成员函数的访问方式,理解构造函数和析构函数的定义与执行过程,学会构造函数的重载方法。 3、掌握数组与指针的定义与使用方法,理解数组与指针的存储分配与表示。 4、掌握用指针和引用向函数传递参数。 5、掌握静态数据成员和静态成员函数的使用。 6、理解友元与友元函数的作用与使用方法。 二、实验内容 1、下面是一个计算器类的定义,请完成该类成员函数的实现。 class Counter { public: Counter(int number); void increment(); //给原值加1 void decrement(); //给原值减1 int getValue(); //取得计数器值 int print(); //显示计数 private: int value; }; #include class count { public: counter(int number); void increment(); void decrement(); int getvalue(int); int print();

private: int value; }; void count::increment() { int a=value+1; } void count::decrement() { int b=value-1; } int count::getvalue(int s) { value=s; return 0; } int count::print() { cout<

ANSI字符串类String的实现及使用

ANSI字符串类String的实现及使用 和C#不一样,C和C++的内部都没有字符串数据类型,但是我们可以用C++建立一个实现字符串相关操作的类型:String 下面的程序分成两个部分: (1)String类:类头String.h和类实现String.cpp (2)String类使用演示程序Main.cpp 类头文件String.h代码如下: #ifndef STRING_H #define STRING_H #include using namespace std; class String { friend ostream & operator< friend istream & operator>>(istream & input, String & s); public: String(const char* = ""); String(const String &); ~String(); const String & operator=(const String &); //赋值 String & operator+=(const String &); //字符串连接 int operator!() const; //String为空? int operator==(const String &) const; //测试s1==s2 int operator!=(const String &) const; //测试s1!=s2 int operator(const String &) const; //测试s1>s2 int operator<=(const String &) const; //测试s1<=s2

相关文档
最新文档