Java(1~7章,不包括图形界面)总结,参考Java开发实战经典总结

本文深入探讨Java编程的关键概念,包括数据类型、方法、数组、面向对象编程、异常处理等,提供实用的编程技巧与最佳实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

main()方法四要素:方法的访问修饰符,方法返回类型,方法名(参数列表),方法体
public(访问权限修饰符)
static(特征修饰符)
private声明以后只有自己类能使用
protected 只能被同类,同一包中的类,或者不同包中的子类访问
public: 任何类可以用,无任何限制
不加修饰符:一个包内的类可以访问

JVM:Java Virtual Machine虚拟机 内存中开辟一块空间 将源文件编译成计算机可识别的字节码文件
JRE: Java Runtime Environment 运行环境 JRE里面包含JVM
JDK:Java Development Kit 开发工具包 JDK包含JRE

数据类型:
基本数据类型8个
4整型 byte short int long
2浮点型 float double
1字符型 char
1布尔型 boolean
引用数据类型
数组[] 类class(抽象类abstract class) 接口interface 枚举enum 注解@interface

常见DOS命令:
d: 回车 盘符切换
dir(directory):列出当前目录下的文件以及文件夹
md (make directory) : 创建目录
rd (remove directory): 删除目录
cd (change directory)改变指定目录(进入指定目录)
cd… : 退回到上一级目录
cd: 退回到根目录
del (delete): 删除文件,删除一堆后缀名一样的文件*.txt
exit : 退出dos命令行
cls : (clear screen)清屏

第一

1.在java里面,没小数点的默认是int,有小数点的默认是 double;
2.当表达式中有类型不匹配时,有下列的处理方法:
(1)占用较少字节的数据类型会转换成占用较多字节的数据类型。
(2)有short和int类型时,则用int类型。
(3)字符类型会转换成short类型。
(4) int 类型转换成float类型。
(5)若个操作数的类型为double,则其他的操作数也会转换成double类型。
(6)布尔类型不能转换至其他的类型。
3.程序的结构包含顺序结构、选择结构和循环结构。
4.需要重复执行某项功能时,循环就是最好的选择。可以根据程序的需求与习惯,选择使用Java所提供的for、while 及do…while循环。
5. break 语句可以让强制程序脱离循环。当程序运行到break语句时,即会离开循环,继续执行循环外的下一个语句,如果break语句出现在嵌套循环中的内层循环,则break语句只会离开当前层循环。
6. continue语句可以强制程序跳到循环的起始处,当程序运行到continue 语句时,即会停止运行剩余的循环主体,转到循环的开始处继续运行。
7.选择结构包括if、if–else 及switch语句,语句中加上了选择结构后,就像是“十字路口”,根据不同的选择,程序的运行会有不同的方向与结果。
8.方法的重载就是方法名称相同,但参数的类型和参数的个数不同。通过传递参数的个数及类型的不同可以完成不同功能的方法调用。(方法的重载一定是只是在参数类型或参数个数不同,System.out.println()方法也是重载方法)。
9.可以用return直接结束一个方法。

第二

1.数组是由一组相同类型的变量所组成的数据类型,它们是以-一个共同的名称来表示的。数组按存放元素的复杂程度分为一维、二维及多维数组。
2.使用Java中的数组必须经过声明数组和开辟内存给该数组两个步骤。声明数组时会在栈内存开辟空间,只开辟栈空间的数组是无法使用的,必须有指向的堆内存空间才能够使用,可以使用new关键字开辟堆内存空间,同时指定开辟的空间大小。
3.在Java中要取得数组的长度(也就是数组元素的个数),可以利用数组名称.length来完成。
4.数组访问时要使用下标,如果下标的访问超过了数组的范围,则会出现数组越界异常。
5.Java允许二维数组中每行的元素个数均不相同。
6.方法是一段可重复调用的代码段,在本章中因为方法可以由主方法直接调用,所以要加入public static关键字修饰。
7.数组的传递属于引用数据类型的传递,传递的是堆内存地址的使用权,一个数组可以有多个名称指向同一个堆内存空间,每-个名称都可以修改堆内存中的内容。
8.Java新特性中提供了可变参数,这样在传递参数时就可以不受参数的个数限制,全部的参数将以数组的形式保存下来。
9.foreach是Java中的新特性,主要作用是方便地输出数组中的内容。
遍历数组:int[] a={0,1,2};for(int temp:a){System.out.println(temp);}

第三

1.在Java开发中对于私有属性的访问有了以下的明确定义:“只要是被封装的属性,则必须通过setter和getter方法设置和取得”。对于私有属性要使用setter 和getter方法设置和访问实际上还有一个原因,就是在Java中存在反射机制,在各个程序中,反射机制都会利用setter 和getter 设置和取得属性内容。
2.构造方法:
(1)构造方法的名称必须与类名称一致。
(2)构造方法的声明处不能有任何返回值类型的声明。
(3)不能在构造方法中使用return 返回一个值。
3.在一个类中如果已经明确地声明了一个构造方法,那么程序在编译时将不会再生成默认的构造方法,即一个类中应保证至少有一个构造方法。与普通方法–样,构造方法也是可以重载的,只要每个构造方法的参数类型或参数个数不同,即可实现重载。
4.字符串的内容不可改变,一个String对象内容的改变实际上是通过内存地址的“断开-连接”变化完成的,而本身字符串中的内容并没有任何的变化。
5.在数组操作中,使用length取得数组的长度,但是操作的最后没有“()”,而字符串调用length是一个方法,只要是方法后面都有“()” 。
6.字符串:
(1)在实际的系统开发中,用户输入的数据中可能含有大量的空格,使用trim()方法即可去掉字符串的左、右空格。
(2)在String中通过split()方法可以进行字符串的拆分操作,拆分的数据将以字符串数组的形式返回。
(3)在用户输入信息时,有时需要统一输入数据的大小写,此时就可以使用toUpperCase()和toLowerCase()两个方法完成大小写的转换操作。
(4)在String中使用startsWith(方法可以判断字符串是否以指定的内容开头,使用endsWithO方法可以判断字符串是否以指定的内容结尾。
(5)在String中可以通过equals()方法进行字符串内容的比较,但是这种比较方法是区分大小写的比较,如果要完成不区分大小写的比较则可以使用equalsIgnoreCase()方法。
(6)使用String 的replaceAll()方法可以将字符串的指定内容进行替换。
7.this的作用:
(1)表示类中的属性。
(2)可以使用this调用本类的构造方法。构造方法是在实例化对象时被自动调用的,也就是说在类中的所有方法中,只有构造方法是被优先调用的,所以使用this调用构造方法必须也只能放在构造方法的第1行。
(3)this表示当前对象。
8.静态代码块优先于主方法执行,而在类中定义的静态代码块会优先于构造块执行,而且不管有多少个对象产生,静态代码块只执行一次。
9.在外部访问内部类格式:外部类.内部类 内部类对象=外部类实例.new内部类();(以上的操作格式中,首先要找到外部类的实例化对象之后,才可以通过外部类的实例化对象去实例化内部类的对象。)

第四

1.面向对象的三大特征为封装、继承、多态。
2.类与对象的关系:类是对象的模板,对象是类的实例,类只能通过对象才可以使用。
3.类的组成为属性和方法。
4.对象的产生格式:类名称 对象名称= new类名称()。
5.如果一个对象没有被实例化而直接使用,则使用时会出现空指向异常。
6.类属于引用数据类型,进行引用传递时,传递的是堆内存的使用权。
7.类的封装性:通过private关键字进行修饰,被封装的属性不能被外部直接调用,而只能通过setter或getter方法完成。只要是属性,则必须全部封装。用private声明的属性或方法只能在其类的内部被调用,而不能在类的外部被调用。
8.构造方法可以为类中的属性初始化,构造方法与类名称相同,无返回值类型声明,如果在类中没有明确地定义出构造方法,则会自动生成一个无参的什么都不做的构造方法,在一个类中的构造方法可以重载,但是每个类都至少有一个构造方法。
9. String 类在Java中较为特殊,String 可以使用直接赋值的方式,也可以通过构造方法进行实例化,前者只产生一个实例化对象,而且此实例化对象可以重用,后者将产生两个实例化对象,其中一个是垃圾空间,在String中比较内容时使用equals方法,而“=”比较的只是两个字符串的地址值。字符串的内容一-旦声明则不可改变。
10.在Java中使用this关键字可以表示当前的对象,通过“this.属性”可以调用本类中的属性,通过“this.方法()”可以调用本类中的其他方法,也可以通过this()的形式调用本类中的构造方法,但是调用时要求要放在构造方法的首行。
11. 使用static 声明的属性和方法可以由类名称直接调用,static属性是所有对象共享的,所有对象都可以对其进行操作。
12.如果需要限制类对象的产生,则可以将构造方法私有化。
13.对象数组的使用要分为声明数组和为数组开辟空间两步。开辟空间后数组中的每个元素的内容都是null。
14.内部类是在一个类的内部定义另外的一个类,使用内部类可以方便地访问外部类的私有操作。在方法中声明的内部类要想访问方法的参数,则参数前必须加上final关键字。

第五

继承关系:子–>父–>object
1.继承:在子类中直接通过“super.方法()”形式即可访问父类中的相关方法。子类返回值类型要小于等于父类,子类访问权限大于等于父类(private<default<protected<public)。
private 访问权限
private属于私有访问权限,可以用在属性的定义、方法的声明上,一旦使用了private 关键字声明,则只能在本类中进行访问。
default (默认)访问权限
如果一个类中的属性或方法没有使用任何的访问权限声明,则就是默认的访问权限,默认的访问权限可以被本包中的其他类所访问,但是不能被其他包的类所访问。
protected 访问权限
protected属于受保护的访问权限。一- 个类中的成员如果使用了protected 访问权限,则只能被本包及不同包的子类访问。
public 访问权限
public属于公共访问权限。如果-一个类中的成员使用了public访问权限,就可以在所有类中被访问,不管是否在同一个包中。
2.子类可以通过super(参数)调用抽象类的构造方法。
3.final(相当于太监)
(1)使用final声明的类不能有子类。
(2)使用final声明的方法不能被子类所覆写。
(3)使用final声明的变量即成为常量,常量不可以修改。
4.在使用final声明变量时,要求全部的字母大写,如INFO,这点在开发中是非常重要的。如果一个程序中的变量使用public static final声明,则此变量将称为全局常量。
5.(1)包含一个抽象方法的类必须是抽象类。但是抽象类不一定就包含抽象方法。
(2)抽象类和抽象方法都要使用abstract关键字声明。
(3)抽象方法只需声明而不需要实现。
(4)抽象类必须被子继承extends,子类(如果不是抽象类)必须覆写抽象类中的全部抽象方法。如果子类不覆写父类的抽象方法,要把子类变成抽象类。
6.接口(interface)可以被理解为一种特殊的类,是由全局常量和公共的抽象方法所组成。实现一个接口必须覆写此接口中的所有抽象方法。(如果一个接口中定义的抽象方法过多,但是在子类中又用不到这么多抽象方法,那么就一个接口首先被一个抽象类先实现(此抽象类通常称为适配器类),并在此抽象类中实现若干方法(方法体为空),则以后的子类直接继承此抽象类,就可以有选择地覆写所需要的方法。)
7.在接口中的抽象方法必须定义为public访问权限,这是绝对不可改变的。
8.与抽象类一样,接口若要使用也必须通过子类,子类通过implements关键字实现接口。
9.多态:在进行对象的向下转型前,必须首先发生对象向上转型,否则将出现对象转换异常。即:A父类,B子类。先b–>a,再把a强制转化为B类
例如:A a=new B();B b=(B)a;
10.程序通过对象的多态性为抽象类及接口进行实例化,这样所调用的方法就是被子类所覆写过的方法。
11.在类的设计中,一定要明确记住一个原则,一个类不要去继承一个已经实现好的类,只能继承抽象类或实现接口,如果接口和抽象类都可以使用,那么优先使用接口,避免单继承局限。

第六
1.继承可以扩充已有类的功能,通过extends 关键字实现,可将父类的成员(包含数据成员与方法)继承到子类。
2. Java 在执行子类的构造方法前会先调用父类中无参的构造方法,其目的是为了对继承自父类的成员做初始化的操作。
3.父类有多个构造方法时,如要调用特定的构造方法,则可在子类的构造方法中通过super()关键字来实现。
4. this()用于在同一类内调用其他的构造方法,而super()则用于从子类的构造方法中调用其父类的构造方法。
5.使用this调用属性或方法时会先从本类中查找,如果本类中没有查找到,再从父类中查找,而使用super则会直接从父类中查找需要的属性或方法。
6. this()与 super()其相似之处在于: (1) 当构造方法有重载时,两者均会根据所给予的参数的类型与个数正确地执行相对应的构造方法。(2)两者均必须编写在构造方法内的第1行,也正是这个原因,this() 与super()无法同时存在在同一个构造方法内。
7.重载(overloading)是指在相同类内定义名称相同但参数个数或类型不同的方法,因此,Java可依据参数的个数或类型调用相应的方法。
8.覆写(overriding) 是在子类当中定义名称、参数个数与类型均与父类相同的方法,用以覆写父类中的方法。
9.如果父类的方法不希望被子类覆写,可在父类的方法前加上final关键字,这样该方法便不会被覆写。
10. final 的另一个功能是把它加在数据成员变量前面,这样该变量就变成了一个常量,因此便无法在程序代码中再做修改了。使用public static final可以声明一个全局常量。
11.所有的类均继承自Object类。-一个好的类应该覆写Object 类中的toString()、equals()、hashCode()3 个方法,所有的对象都可以向Object类进行向上转型。
12. Java 可以创建抽象类,专门用来当作父类。抽象类的作用类似于“模板”,其目的是依据其格式来修改并创建新的类。
13.抽象类的方法可分为两种,一种是一般的方法,另一种是以abstract关键字开头的抽象方法。抽象方法并没有定义方法体,而是要保留给由抽象类派生出的新类来定义。
14.抽象类不能直接用来产生对象,必须通过对象的多态性进行实例化操作。
15.接口是方法和全局常量的集合,接口必须被子类实现,一个接口可以同时继承多个接口,一个子类可以同时实现多个接口。
16. Java 并不允许类的多重继承,但是允许实现多个接口。
17. 接口与一般类一样,均可通过扩展的技术来派生出新的接口。原来的接口称为基本接口或父接口;派生出的接口称为派生接口或子接口。通过这种机制,派生接口不仅可以保留父接口的成员,同时也可以加入新的成员以满足实际的需要。
18. Java 对象的多态性分为向上转型(自动,转到父类)和向下转型(强制,转到子类)。
19.通过instanceof关键字可以判断对象属于哪个类。
20.匿名内部类的作用是可利用内部类创建不具有名称的对象,并利用它访问类中的成员。
!!!对于成员变量和静态方法,子类隐藏父类的。上转型对象引用的是父类的。
!!!对于实例成员方法,子类覆盖父类的。上转型对象引用的是子类的。

第七
1.异常是导致程序中断运行的一种指令流,当异常发生时,如果没有进行良好的处理,则程序将会中断执行。
2.异常可以使用try…catch进行处理,也可以使用try…cat…finally进行处理,在try语句中捕捉异常,然后在catch中处理异常,finally 作为异常的统一出口,不管是否发生异常都要执行此段代码。
3.异常的最大父类是Throwable,其分为两个子类,分别为Exception、Error。Exception表示程序处理的异常,而Error表示JVM错误,一般不由程序开发人员处理。
4.发生异常后,JVM会自动产生一个异常类的实例化对象,并匹配相应的catch语句中的异常类型,也可以利用对象的向上转型关系直接捕获Exception。
5. throws 用在方法声明处,表示本方法不处理异常。
6. throw 表示在方法中手工抛出一个异常。
7.自定义异常类时,只需要继承Exception类即可。
8.断言是JDK 1.4后提供的新功能,可以用来检测程序的执行结果,但开发中并不提倡使用断言进行检测。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值