今天学习的构造函数与字符串的详解

今天学习的还好吧,但是感觉太陌生啦,或许没有接触的人都感觉这个太抽象,但是其实不是啦,要理解啦就可以把构造函数好好地使用啦,但是在写程序中出的问题还是难免的·

1.构造方法

•方法名和类名一样,没有返回值,连void都不用。

•构造函数可以有参数,new对象的时候传递函数参数即可

•如果不指定构造函数,则类有一个默认的无参构造函数。如果指定了构造函数,则不再有默认的无参构造函数,如果需要无参构造函数,则需要自己来写。

•构造函数可以重载,也就是有多个参数不同的构造函数。

举例:

•给前面写的学生类添加构造方法.使在实例化学生类的时候可以通过构造方法对姓名性别年龄语数英等属性赋值,也可以只对姓名和性别赋值.年龄默认为18岁,语数英成绩默认为0分.

–张三 男 18  三科成绩为:90 95 80

–小兰 女 16  三科成绩为:95 85 100

enum Gender {
          男,
          女
    }
    class Student
    {
        public Student()
        {

        }
        string name;
        public string Name { set; get; }
        int age=18;
        //public int Age { set; get; }
        Gender gender;
        public Gender Gender { set; get; }
        int chinese;
        int math;
        int english=0;
        public Student( string n,int a,Gender g,int c,int m,int e)
        {
            name = n;
            age = a;
            gender = g;
            chinese = c;
            math = m;
            english = e;
        }
        public void say()
        {
            Console.WriteLine("名字为{0},今年{1}岁了,{2},三科成绩为{3},{4},{5}", Name, age, Gender,chinese,math,english);
        }
}

 class Program
    {
        static void Main(string[] args)
        {
            Student stu = new Student("张三", 18, Gender.男, 90, 85, 80);
            stu.say();
            Console.ReadKey();
         }
     }

这就是构造函数的方法,另外还有个就是给字段赋初值,下面这样也可以实现传参:

从结果看:   结果输出了年龄18岁,即为初值。

2.写一个Ticket类,有一个距离属性(本属性只读,在构造方法中赋值),不能为负数,有一个价格属性,价格属性只读,并且根据距离distance计算价格Price (1元/公里):

–0-100公里        票价不打折

–101-200公里    总额打9.5折

–201-300公里    总额打9折

–300公里以上    总额打8折

有一个方法,可以显示这张票的信息.90公里90块钱

   class ticket
    {
        public ticket(int d)
        {
            if (distance < 0)
            {
                distance = 0;
            }
            this.distance = d;
        }
        int distance;

        public int Distance
        {
            get { return distance; }
        }
        double price = 500;
        public double Price
        {
            get
            {
                if (distance > 0 && distance <= 100)
                {
                    return distance;
                }
                else if (distance > 100 && distance <= 200)
                {
                    return distance * 0.95;
                }
                else if (distance > 200 && distance <= 300)
                {
                    return distance * 0.90;
                }
                else
                {
                    return distance * 0.80;
                }
            }
        }

    }
}

class Program
    {
        static void Main(string[] args)
        {
            ticket a = new ticket(155);

            Console.WriteLine(a.Price);
            Console.ReadKey();
        }
    }

这就是构造方法。

2.字段与属性

简单的说下,就是前面有-的都是字段,+的为属性和方法。

3.命名空间

•namespace(命名空间),用于解决类重名问题,可以看做“类的文件夹”。

•如果代码和被使用的类在一个namespace则不需要using。

•在不同命名空间下的类调用有两种方法:

–写全称  命名空间.类名

–先using引用命名空间,再调用

4.字符串的处理

•string可以看做是char的只读数组。char c = s[1];。例子:遍历输出string中的每个元素。

•C#中字符串有一个重要的特性:不可变性,字符串一旦声明就不再可以改变。所以只能通过索引来读取指定位置的char,不能对指定位置的char进行修改。

•如果要对char进行修改,那么就必须创建一个新的字符串,用s. ToCharArray()方法得到字符串的char数组,对数组进行修改后,调用new string(char[])这个构造函数(暂时不用细研究)来创建char数组的字符串。一旦字符串被创建,那么char数组的修改也不会造成字符串的变化。例子:将字符串中的A替换为a。

•练习一:随机输入你心中想到的一个名字,然后输出它的字符串长度  Length:可以得字符串的长度

enum Gnder {
    }
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("名字");
            Length(Console.ReadLine());
            Console.ReadKey();
        }

        static void Length(string name)
        {

            Console.WriteLine(name.Length);
        }
    }

•一切类型都可以调用.ToString()方法转换成字符串类型.

5.String类常用方法

•ToLower():得到字符串的小写形式。

•注意字符串是不可变的,所以这些函数都不会直接改变字符串的内容,而是把修改后的字符串的值通过函数返回值的形式返回。s.ToLower()与s=s.ToLower()

•ToUpper():得到字符串的大写形式; Trim()去掉字符串两端的空白。

•s1.Equals(s2, StringComparison.OrdinalIgnoreCase),两个字符串进行比较不区分大小写的比较。

•string[] Split(params char[] separator):将字符串按照指定的分割符分割为字符串数组;

•string[] Split(char[] separator, StringSplitOptions options)将字符串按照指定的char分割符分割为字符串数组( options 取RemoveEmptyEntries的时候移除结果中的空白字符串);

•字符串替换:string Replace(string oldValue, string newValue)将字符串中的出现oldValue的地方替换为newValue。例子:名字替换。

•取子字符串:string Substring(int startIndex),取从位置startIndex开始一直到最后的子字符串;

•string Substring(int startIndex, int length),取从位置startIndex开始长度为length的子字符串,如果子字符串的长度不足length则报错。

•bool Contains(string value)判断字符串中是否含有子串value

•bool StartsWith(string value)判断字符串是否以子串value开始;

•bool EndsWith (string value)判断字符串是否以子串value结束;

•int IndexOf(string value):取子串value第一次出现的位置。

•Int IndexOf(string value,int startIndex)

今天在云和学院学习了这些,也是我迈向面向面向对象的开始··························

时间: 2024-08-05 23:13:22

今天学习的构造函数与字符串的详解的相关文章

JavaFX学习之道:JavaFX API详解之Window,Stage,PopupWindow

stage包中包含 Window, Stage, PopupWindow, Popup, FileChooser, DirectoryChooser, Screen等类. 其中Window类可理解成一个窗体,用于存放Scene,并与用户操作.一般window作为窗体,都用其子类Stage和PopupWindow. 看一下Window作为窗体的顶级类包含的一些共同属性 eventDispatcher setEventDispatcher(EventDispatcher value) focused

【转】 c++拷贝构造函数(深拷贝,浅拷贝)详解

c++拷贝构造函数(深拷贝,浅拷贝)详解 2013-11-05 20:30:29 分类: C/C++ 原文地址:http://blog.chinaunix.net/uid-28977986-id-3977861.html 一.什么是拷贝构造函数      首先对于普通类型的对象来说,它们之间的复制是很简单的,例如: int a=100; int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量.  下面看一个类对象拷贝的简单例子. #include<iostream

学习笔记——Maven settings.xml 配置详解

文件存放位置 全局配置: ${M2_HOME}/conf/settings.xml 用户配置: ${user.home}/.m2/settings.xml note:用户配置优先于全局配置.${user.home} 和和所有其他系统属性只能在3.0+版本上使用.请注意windows和Linux使用变量的区别. settings.xml详解 声明规范 <?xml version="1.0" encoding="UTF-8"?> <settings x

Python 字符串方法详解

Python 字符串方法详解 本文最初发表于赖勇浩(恋花蝶)的博客(http://blog.csdn.net/lanphaday),如蒙转载,敬请保留全文完整,切勿去除本声明和作者信息. 在编程中,几乎90% 以上的代码都是关于整数或字符串操作,所以与整数一样,Python 的字符串实现也使用了许多拿优化技术,使得字符串的性能达到极致.与 C++ 标准库(STL)中的 std::string 不同,python 字符串集合了许多字符串相关的算法,以方法成员的方式提供接口,使用起来非常方便. 字符

JavaEE学习之Maven配置文件pom.xml详解(转)

一.引言 (本文转载自:http://blog.csdn.net/longeremmy/article/details/9670619) 使用maven有一些时间了,一直没有好好将pom配置文件每个节点的意义好好了解一番.今天突然想来了解下:pom- project object model 项目对象模型.顾名思义,他是用来描述项目信息的,以及构建方式,依赖等.网上有一篇文章写的很详细,这里就借用一下,以备日后使用. 二.详解 1 <project xmlns="http://maven.

php 字符串函数详解

函数 描述 PHP addcslashes() 在指定的字符前添加反斜杠. 4 addslashes() 在指定的预定义字符前添加反斜杠. 3 bin2hex() 把 ASCII 字符的字符串转换为十六进制值. 3 chop() rtrim() 的别名. 3 chr() 从指定的 ASCII 值返回字符. 3 chunk_split() 把字符串分割为一连串更小的部分. 3 convert_cyr_string() 把字符由一种 Cyrillic 字符转换成另一种. 3 convert_uude

&nbsp; redis字符串内型详解

redis字符串内型详解 字符串 Redis中的字符串是一个字节序列.Redis中的字符串是二进制安全的,这意味着它们的长度不由任何特殊的终止字符决定.因此,可以在一个字符串中存储高达512兆字节的任何内容. 示例 redis 172.16.10.1:6379> set name "baidu.com"  OK  redis 172.16.10.1:6379> get name  "baidu.com"Shell 在上面的示例中,set和get是Redi

学习笔记——Maven pom.xml配置详解

POM的全称是“ProjectObjectModel(项目对象模型)”. pom.xml详解 声明规范 <projectxmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apach

使用JS截取字符串函数详解

使用JS截取字符串函数详解 JS截取字符串函数:一.函数:split();二.函数:John();三.函 数:indexOf();四.其他几种方 法:stringObject.substring(start,stop);stringObject.substr(start [, length ])... 一.函数:split() 功能:使用一个指定的分隔符把一个字符串分割存储到数组 例子: str=”jpg|bmp|gif|ico|png”; arr=theString.split(”|”); /