六、类和对象



 

 

什么是类?什么是对象?

 

一切客观存在都是对象。有价值:用对象完成使命。

不要发明轮子---

 

根据大量对象的特征,抽象出他们的共同点。得到类。

 

1.类由属性和方法组成

 

类是所有创建对象的模版。

设计一个学生类

两部分:属性+方法

 

public class Student {

//属性

String name=xiaoming;

int age;

char sex;

//方法

public void study(){

 

System.out.println("i can study!");

}

 

public void sleep(){

System.out.println("i can sleep!");

}

 

 

}

 

如何用类创建对象?

 

Student s=new Student();定义一个student类型的变量指向内存某块存储学生对象的空间。

访问对象的某个属性用s.属性名方式。

 

 

2.实例变量

 实例变量有默认值

     默认值是各种各样的零。

 

 

 

 实例变量至少在本类范围中有效

 

 

 

 

 实例变量可以和局部变量发生命名冲突,局部优先

public class Student {

//属性

String name;

int age;

char sex;

//方法

public void study(){

String name="xiaoming";

System.out.println(name+" can study!");

}

 

 

 

 

 

 

 

 

 

 

3.类中方法定义类似函数定义

 

修饰符   返回值类型   方法名(参数1,参数2)  异常{

                                           方法体

 

}

 

4.什么叫方法重载

 

首先这些方法在同一个类里面定义,方法名字相同,但是参数列表不同.要么参数类型不同,要么参数个数不同,要么参数个数一样,但是排列顺序不一样,特别注意,跟返回值类型无关。

public void print(String  name){

System.out.println("学生姓名是:"+name);

}

 

public void print(int age){

System.out.println("学生年龄是:"+age);

}

 

public void print(String name,int age){

System.out.println("学生的基本信息:姓名是"+name+"\t 年龄是"+age);

}

public void print(int age,String name){

System.out.println("学生的基本信息:姓名是"+name+"\t 年龄是"+age);

}

 

优点:在运行的时候根据具体实参的不同自动调用相应的方法。整个过程对使用对象的方法的程序员来说是透明的。

 

实例代码

 

根据传入参数的不同自动选取相应方法

典型例子,System.out.println(整形,字符串等)

 

5.  构造方法

 

 

定义:首先构造方法没有返回值,方法名要跟类名一致,其他部分和普通方法没有区别。

如果一个类里面没有定义任何构造方法,默认系统会给设置一个构造方法,内容如下:

//构造方法

public Student(){

}

构造方法可以重载

//构造方法

public Student(){

 

}

public Student(int age){

this.age=age;//修改当前对象的实例变量的值

}

public Student(String name){

this.name=name;

}

public Student(String name,int age){

this.name=name;

this.age=age;

}

 

构造方法作用:

  1. 创建对象

  2. 构造方法里面有方法体,一般是用来初始化实例变量

     

    构造方法在对象构造时,被自动调用一次。而且只会被调用一次

    分配 空间

    初始化属性

    调用构造方法

6.This关键字

This表示当前对象,在类内的任何实例方法中都可以使用,表示等到具体实例化对象的时候会自动产生一个指向对象的变量,这个变量就是this。但this只对类内可见,在外部不能使用。

 

public class TestThis2 {

  public static void main(String args[]){

  MyClass m1 = new MyClass();

  m1.print();

  }

}

class MyClass{

int i = 10;

public void print(){

int i = 20;

System.out.println(i);

System.out.println(this.i);

}

}

 

7.String类   字符串  char2byte

一个特殊类String

创建一个字符串对象

  String s = suns;创建一个对象

  String s = new String(suns); 创建了两个对象

这两种写法区别

前者对象放在jvm字符串池,下次定义同样字符串时候可以不用创建,直接使用,建议采用此方式

后者不放在串池

String类中的常用方法

boolean equals()

equals用法

String str=new String("apple");

if("apple".equals(str)){

System.out.println("二者内容相同");

}

char  charAt(int pos)

//charAt(pos) pos 0---start

char c="apple".charAt(3);

System.out.println(c);

//

int length()

字符串长度

 

boolean startWith(String s)

是否以某个字符串s开始,返回布尔值

String str="dianwei.chi@163.com";

 System.out.println(str.startsWith("d"));

 

 

trim()

去掉两边空格

ContainsString str

当前字符串对象是否包含str对应的字符串,如果包含返回true,不包含返回false

String str="orrnge";

if(str.contains("a")){

System.out.println("该商品符合检索条件");

}

 

Substring(int begin,int end)

Begin0开始,end表示截取到第end-1个字符。

String str="dianwei.chi@163.com";

 String substr=str.substring(8,11);

 System.out.println(substr);//chi

 

 

Substring(int begin)

对当前字符串求从begin这个位置开始的子字符串。Begin0开始。

String str="dianwei.chi@163.com";

 String substr=str.substring(12);

 System.out.println(substr);//163.com

 

Int  indexOf(String s)

返回s在当前大字符串中第几个位置出现,位置从0开始计算的。

@163

String str="dianwei.chi@163.com";

 int pos=str.indexOf("@");

 System.out.println(pos);//11

lastIndexOf(String s)

s在字符串中最后一次出现的位置

String str="dianwei.chi@163.com";

 int pos=str.lastIndexOf(".");

 System.out.println(pos);//15

 

 

 

Replace(old,new),replaceAll(find,instead)

Replace:old代表被替换的字符串,new表示替换成的目标字符串

replaceAll含义和replace基本相同,但是支持正则表达式。

 

 split: public class TestString1 {

 

public static void main(String[] args) {

//         split 分割  [1,2,3,4,5]   1,2,3,4,5

String str="               1,one2,one3,one4,    one5             ";

int[] arr=new int[5];

String[] sarr=str.split(",one");

for(int i=0;i<sarr.length;i++)

System.out.print(sarr[i]+"\t");

}

 

}

 

For循环的for each写法

//for each写法

for(String product:products){

System.out.println(product);

}


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值