面向对象

Posted anzhilanxiao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象相关的知识,希望对你有一定的参考价值。

涉及内容:构造方法,static关键字,字符串

一.构造方法

  1. 是与类名相同的方法名
  2. 对于每个类,JVM都会默认添加一个无参构造方法(构造器),当我们指定时,系统就不会自动添加了。
  3. 构造方法可以重载
  4. 构造方法在创建对象时执行
  5. 不能直接被调用,只能在其他构造方法中调用,这里用到this关键字,只能在第一行被调用
  6. 无返回值,但可以用return结束整个方法。
public Person(){
    this("Cherry");
    System.out.println("无参构造器");
}
public Person(String name){
    //this();
    System.out.println("有参构造器");
    this.name=name;
}
Person p1=new Person();
Person p2=new Person("Tom");
Person p2=new Person(12);//报错,没有这个类型的构造器

二.Static关键字

  1. 与对象无关,只跟类有关,所有对象共用一个静态数据
  2. 可以用(类名.静态)的方式来调用
  3. 静态方法中不能使用非静态数据,因为还没来得及初始化
  4. 静态方法中如果使用非静态,可先创建那个数据的对象,然后通过对象.属性(方法)调用
  5. 在静态中不能用this关键字(因为this跟对象有关嘛)

三.字符串

  1.==和.equals的区别:

    ==直接比较的是变量的值,.equals()方法比较的是地址上面具体的值

    intern()方法:内容与此字符串相同,但一定取自具有唯一字符串的常量池

String s1=new String("fsk");
String s2=new String("fsk");
System.out.print(s1==s2);//比较的是栈内的值(地址),这个是false
System.out.print(s1.equals(s2));//true
s3.intern()==s1//true

  2.toString()方法

    属于object类的方法,在直接输出对象时,实际上就是在调用对象的toString()方法,可重写

  3.其他方法列举

 1 s.charAt(i);//返回指定索引出的字符
 2 s.compareTo(s1);//按ASCII码一个字符一个字符地比较
 3 s.concat(s1);//字符串拼接
 4 s.contains("ab");//是否包含
 5 s.endsWith(".java");//是否以某结尾
 6 s.indexOf("ab");//返回索引
 7 s.length();//字符串的长度
 8 s.isEmpty();//是否为空
 9 s.lastIndexOf("a");//最后出现a的位置的索引
10 s.substring(5,7);//子串
11 s.toCharArray();//转为字符数组
12 s.trim():删除头尾的空格,没有参数,只能删除空格

 

以上是关于面向对象的主要内容,如果未能解决你的问题,请参考以下文章

面向面试编程代码片段之GC

PHP面向对象之选择工厂和更新工厂

Java中面向对象的三大特性之封装

python之路之前没搞明白4面向对象(封装)

Scala的面向对象与函数编程

Python面向对象学习之八,装饰器