Java面向对象的思想和理解

二十二、对象
对象是具有特殊属性和行为方式的实体。对类的具体化。
属性(状态)。
方法(行为方式)。

二十三、类
类是对现实世界中具体事物的抽象描述,一般用符号class表示。
类是一个模板,它描述一类对象的行为和状态。
类可以定义为数据和方法的集合。
数据为成员变量,用来保存状态。
方法为成员方法,是对类的状态的控制。

二十四、类的三大属性
 封装:
把对象的属性和行为结合成一个独立的单位
好处:外界不能直接访问或修改这些数据和代码,只能通过对象提供接口函数来改变或获取对象的属性数据
继承:
从已存在的类派生出新的类,前者称为父类,后者叫做子类。
好处:通过继承关系可形成一种类层次结构,叫做继承结构。体现了类的扩展性
多态:
不同类的对象,可调用同一个方法,实现不同的功能
好处:提高代码复用性,提高程序设计的灵活性和效率

二十五、成员变量
成员变量为类的基本单位,用来保存对象的状态。即类的字段。

二十六、class类型
class类型声明的变量不是对象本身,而是对象的引用(reference)。引用变量默认值为null,赋值后值的默认形式为类名@hashcode值

二十七、对象的内存分配
(1)、基本数据类型的变量在声明时同时分配存储器空间,默认为基本值。
(2)、引用类型的变量在声明时只分配引用变量的存储空间,不分配对象存储器空间。因为引用的值不是对象数据,只是对象的引用。

二十八、调用
类名.方法名 时,该方法必须为静态方法(用static修饰)

二十九、对象的地址
Person p1=new Person();
System.out.println(p1); 第一个对象: 包名.类名@15db9742

三十、构造函数
若类没有定义构造函数,编译程序会自动创建一个缺省(无参或空)构造函数。
然而一旦定义了一个构造函数,就不会帮我们自动生成一个。

三十一、将属性在构造器中设置为默认值(构造器中可以有return;语句)

public Rectangle() {
	width = 1;
	height = 1;
	return ;
}

三十二、在构造器中调用构造器
在一个构造函数中调用另一个构造函数时,用this关键字。
构造函数调用是且只能是构造函数中的第一条语句,并且不能在一个构造函数调用两个以上的构造函数。

public Student(String name){}
	public Student(int age,String name){
		this(name);
	}

三十三、构造器的注意事项
构造器在创建对象时执行,给对象初始化,并且可以重载
构造器不能在外部被调用,只能在本类的其他构造器中调用
s2.Student();在main方法中不能用对象名.构造器()的方式调用构造器

三十四、静态数据
静态数据依赖于类而存在,与对象是否创建无关
静态数据是类的所有对象共享(公有的)的数据,不因为对象的不同而不同。如果使用一个对象修改了静态数据,其他对象中的这个数据也会被改变。
使用静态数据不需要提前拥有对象,使用类名调用(标准使用方式)。
静态方法中不能使用非静态的属性、方法,也就是说,静态方法中不能使用非静态数据,可以使用静态数据
非静态方法中可以使用静态和非静态数据
当我们想要在静态方法中使用非静态数据,可以先创建那个类的对象,通过对象.数据名的方式来使用
在方法中存在引用this表示调用这个方法的那个对象,用static修饰的方法不依赖于对象存在,而且应该用类去调用,所以在statc修饰的方法中不存在关键字this。

三十五、变量的分类
类变量:独立于方法之外定义的变量,用 static 修饰。
实例变量:独立于方法之外定义的变量,不过没有 static 修饰。
访问修饰符如public,static等不能用于局部变量。可以用八大基本数据类型和String声明局部变量
局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。
无论一个类创建了多少个对象,类变量(静态变量)只有一份。
静态变量一般声明为public类型

三十六、对象数组

public class Cangku {
		private Candy[] c = new Candy[100];

		public Cangku() {
			for (int i = 0; i < c.length; i++) {
				Candy c1 = new Candy();
				// 将对象c1的味道属性都设置为"橘子味"
				c1.setTaste("橘子味");
				// 将对象c1赋值给数组c[i]
				c[i] = c1;
				// 将数组c[i]的颜色属性都设置为"Yellow"
				c[i].setColor("Yellow");
			}
		}
}

三十七、构造方法的创建

Person() {
		System.out.println("ssss");
}// 只能在同一个包中创建该对象

三十八、String类中的方法

	char [] result= {'a','b','4','=','*','c','6','a'};
	String s1=new String(result);   //相当于,将字符数组转化成字符串
	String s=new String(result,4,2); 
	//参数1:指定的字符数组,参数2:起始位,参数3:个数
	//将指定字符数组,从指定起始位以指定长度转换成字符串

(1)、compareTo(参数):比较大小规则:对应位置上的字符按照字典顺序比较,
             返回的正整数和负整数为ASCII码的差值
(2)、concat(参数): 字符串连接。String s=s1.concat(s2);
(3)、contains(参数):检测字符串中是否包含”参数”(子串)
             System.out.println(s1.contains(“ab”));
(4)、endsWith(参数):检测字符串是否以”参数”结尾,常用于检测文件是否存在
             System.out.println(s1.endsWith(".txt"));
(5)、indexOf(参数):返回字符第一次出现的位置
             System.out.println(s1.indexOf(“ab”));
(6)、tocharArray():将字符串转化为字符数组

		String s="sssssss";
		char arr[] =s.toCharArray();
		for(int i=0;i

(7)、trim():删除头尾的空格,没有参数,只能删除空格
             System.out.println(s.trim());

你可能感兴趣的:(Java,Java程序猿)