Java学习笔记(第3天)

面向对象最关键的两个词汇是类与对象,实质上可以将类看作是对象的抽象,它定义了对象所具有的属性和方法。

类是用来定义一组对象共同具有的状态和行为的模板,而对象是现实世界中个体或事物的抽象表示,并封装了它们的属性和行为。类声明了这些共同的特性,对象(也就是类的实例)在使用之前,必须定义该对象的类,知道了对象的类型才能够访问它的属性和行为。

在Java语言中,对象的行为被定义成类的方法,对象的属性定义为类成员变量。所以,一个类包括对象的属性和行为。由class关键字声明。在类体中可以定义多个成员变量和成员方法。

Java中提供了一种管理类文件的机制,即包(package)。

Java中每个接口或类都来自不同的包,不论是JavaAPI中的类与接口还是自定义的类与接口都需要隶属某一个包,这个包相当于一个文件夹,包含了一些类和接口的文件。

在类中指定包名时必须将package语句放置在程序的第一行,它必须是文件中的第一行非注释代码,当使用package关键字为类分配包名之后,包名将会成为类名中的一部分,这时,类的全名就是包名加上类名。

Java的命名规则要求包全部使用小写字母。

使用java的import语句导入指定的类包的单个或所有类,包名可以使用通配符“*”代表所有类。

当import导入了一个包中所有的类时,并不会导入相应子包中的类,如果要用到这个包中的子类,需要再次对子包做单独引导。

import关键字除了导入包之外,还可以导入静态成员:import static 静态成员;import static 静态导入语句只能导入类的静态成员。

成员变量是在类体中定义的变量,即全局变量,它用于定义对象的状态。

扫描二维码关注公众号,回复: 154509 查看本文章

成员方法是对象行为的描述。每个方法都是由复合语句描述相应的行为。

成员变量和成员方法统称为类成员。

一个成员方法的参数可以是对象也可以是基本数据类型的变量,同时成员方法存在有返回值和无任何返回值的情况。

声明方法时必须制定返回值类型,如果一个方法没有返回值,就必须使用void关键字作为返回值类型。如果声明方法指定了方法的返回值类型,就必须在方法体中使用return语句返回相应类型的值,使用这个关键字后,方法的执行将被终止。在返回值类型被声明为void的方法中,也可以使用不带返回值的return语句,它可以结束该方法的执行。

创建类的实例对象需要使用new语句:类名 对象名 = new 类构造方法();

创建了对象以后,就可以访问对象的属性,即成员变量:对象名.属性

对象的行为也就是类的成员方法,即通常说的调用或执行对象的某个方法。对象名.成员方法名();

调用成员方法时,如果该方法定义了参数,就必须在括号内提供相同类型的参数值,而且顺序要和定义该方法参数时的顺序相同。

java语言提供了垃圾回收机制,对于不再使用的对象会自动销毁,也可以在程序中显示地为某个对象赋值null值,使对象不再被使用。

类变量也称为静态成员变量,它的语法在成员变量的基础上添加了static关键字,使成员变量称为静态的。静态的成员变量不是分配给每个实例变量的,而是属于类的变量,它在内存中是唯一的,可以直接使用“类名.成员变量”的格式去访问。它在内存中的位置是固定的,是该类的所有实例对象所共享的存储单元。并且只占用一份内存空间。

声明为静态的变量必须是成员变量,而不能是局部变量,在方法体内或任何代码块中声明的变量不能使用static关键字。

成员变量与成员方法必须创建对象,通过对象才能访问。类方法由static关键字定义,它也是静态成员方法。

静态成员属于类的成员,在使用方式上应该使用类名作为前缀访问静态成员,而不是使用对象名。静态成员变量和静态成员方法不能够被非静态方法访问,反之,非静态方法可以访问静态成员。

方法的重载就是在同一个类中定义了多个名称相同,但是参数类型和数量以及顺序不同的方法。

如果一个方法中含有与成员变量同名的局部变量,则方法中对该变量的访问以局部变量进行访问,也就是说,方法体中的局部变量覆盖了成员变量。如果要在该范围内访问成员变量,就必须使用this关键字。不能在静态上下文和静态代码块中使用this关键字。

Java语言提供了初始化对象的构造方法和静态代码块,它们在创建对象的同时就会完成初始化工作。

构造方法是一个与类同名的方法,对象的创建就是通过构造方法完成的,其功能主要是完成对象的初始化,每当类实例化一个对象时,类都会自动调用构造方法。声明构造方法没有返回值类型。构造方法的名称要与本类的名称相同。

普通的没有返回值的方法使用public void methodEx()这种形式进行定义,但构造方法并不需要void关键字进行修饰。如果类中没有明确定义任何构造方法,则编译器会自动创建一个不带参数的默认构造方法。

在构造方法中可以完成变量赋值、连接数据库等初始化工作。

构造方法也可以重载,定义参数列表的多个不同构造方法可以创建并初始化不同的对象。

如果在类中定义的构造方法都不是无参的构造方法,则编译器不会为类设置一个默认的无参构造方法。

this关键字还可以用于各个构造方法之间的调用。

一个类可以创建不包含在任何方法体中的静态代码块,该代码块是使用static关键字定义的一个复合语句。static{代码块};程序代码块在类被加载时,执行且仅执行一次,多用于类属性的初始化工作。

在定义方法时,可以为方法指定参数列表,方法根据参数列表与方法的调用者进行数据交互。参数列表的参数类型可以是int、short、double等基本数据类型,也可以是对象类型,但是这两种参数类型的值传递方式并不一样。如果传递的参数是基本数据类型,该方法会直接获得指定类型的数值;如果传递的参数是对象类型,那么该方法获得的只是一个对象地址的引用,通过该引用可以访问和操作对象属性与行为,但是对象的实体并没有传递给该方法,它还在内存的某个区域,在这种情况下,当方法改变对象的属性时会直接改变对象实体的数据,而基本类型的数据是值传递的,改变它不会影响方法调用者传递的变量。

在Java语言中,字符串类型的字面量必须包含在一对“”(双引号)内。字符串是由许多个字符连接而成的。字符串是系统能够显示的任何文字信息,甚至可以是单个字符。在Java中由“”号包含的都是字符串,不能作为其他数据类型来使用。声明字符串变量必须经过初始化才能使用。没有初始化的对象是不能使用的。

字符串之间的连接,或者字符串与其他基本类型的连接可以使用“+”运算符,“+”运算符可以连接多个表达式并产生一个String对象。

Java中一句相连的字符串不能分开在两行中写,但可以用“+”解决该问题。

只要“+”运算符的一个操作数是字符串,编译器就会将其他操作数转换为字符串形式。

比较运算符“==”比较的是两个字符串的地址是否相同。要比较两个字符串的内容是否相同,可以使用equals()方法和equalsIgnoreCase()方法。如果两个字符串具有相同的字符和长度,并且大小写相同,则使用equals()方法进行比较则返回true,使用equals()方法对字符串进行比较时,要区分大小写。equalsIgnoreCase()方法是在忽略了大小写的情况下比较两个字符串是否相同,返回结构仍为boolean类型。

String类的compareTo()方法按字典顺序比较两个字符串,该比较基于字符串中各个字符的Unicode编码值。返回一个负整数、正整数或0.compareTo()方法只有在equals(Object)方法返回true时才返回0.

使用String类的length()方法可获得字符串对象的长度。

String类提供了两种查找字符串的方法,即indexOf()与lastIndexOf()方法。这两种方法都允许在字符串中搜索指定条件的字符或字符串。indexOf()方法返回的是搜索的字符或字符串首次出现的位置,lastIndexOf()方法返回的是搜索的字符或字符串最后一次出现的位置。如果没有检索到字符串,则返回-1.

字符串的下标是从0到length()-1。如果lastIndexOf()方法中的参数是空字符串“”,则返回的结果与调用该字符串length()方法的返回结果相同。

使用charAt()方法可以获取字符串指定索引位置的字符。trim()方法返回字符串的副本,也就是返回一个新的字符串。这个新的字符串在原有字符串基础上去掉了前导空白和尾部空白,这里的空白包括空格与制表符tab。

通过String类的substring()方法可以从当前字符串中截取指定长度的子字符串。利用字符串的下标进行截取,并且字符串下标是从0开始的。在字符串中空格占用一个索引位置。

使用split()方法可以将字符串按指定方式进行分割;或子串对内容进行分割,并将分割后的结果存放在字符串数组中。没有统一的对字符进行分割的符号,如果想定义多个分隔符,可以使用符号“|”,例如“,|=”表示分割符分别为“,”和“=”。

replace()方法可实现将指定的字符或字符串替换成新的字符或字符串。replace()方法返回的结果是一个新的字符串。如果字符串oldChar没有出现在该对象表达式中的字符串序列中,则将原字符串返回。该方法是全部替换。

String类的toLowerCase()方法可将字符串内的所有字符从大写字母改为小写字母。toUpperCase()方法可将字符串中的小写字母改为大写字母。字符串长度与原字符串长度相同。数字或非字符将不受影响。

startWith()方法与endsWith()方法分别用于判断字符串是否以指定的内容开始或结束。返回值都为boolean类型。

猜你喜欢

转载自blog.csdn.net/arpospf/article/details/79353948