JAVA——基础知识总结(四千字)

注释

注释的三种形式:单行注释、多行注释、文档注释

大驼峰

第一个单词的首字母大写。以大写字母开头,用于类名、接口名

小驼峰

第一个单词的首字母是小写,其他单词的首字母大写。以小写字母或单词开头,用于变量名、方法名

常量命令规范

常量是使用final修饰的存储单元。(最终的)

全部为大写字母表示

修饰符

+访问修饰符

+ default - 什么都不写。同一包内可见

+ private - 同一类可见,修饰变量

+ public - 所有类都可见

+ protected - 受保护的 - 同包内的所有子类可见

逻辑运算符

&& 逻辑与 两个关系运算表达式结果都是真,结果是真,反之为假

|| 逻辑或 两个关系运算表达式结果有一个为真,结果就是真

! 逻辑非 表达式结果取反

大概顺序:算术运算符>移位运算符>关系运算符>逻辑运算符>赋值运算符

数据类型转换:

小转大自动转

大转小强制转

对象引用与对象的关系:

(1)对象引用,有时也称为对象引用变量,或称为引用变量。

(2)对象引用与对象在物理上是两个不同的东西。

(3)对于上图,我们通常说b1引用(有时也称为指向)图中的那个Box对象。

(4)对象只能通过对象引用来操作。有时直接使用对象引用代指对象,例如对于上面的例子,有时会直接将b1引用的对象称为“对象b1”或“”b1对象。

(5)将一个对象引用赋值给另一个对象引用,则两个引用变量指向同一个对象。

(6)对引用变量进行相等性比较,例如b1==b2,是比较两个引用变量是否引用同一个对象,所以b1==b2的结果为true。对对象引用进行相等性比较,有时也直接称为对象的相等性比较。

return:

1)return语句用于明确地从一个方法返回。即,return语句导致程序的执行控制转移回到方法的调用者。

(2)如果return之后还有代码也不会执行。

(3)如果方法的返回类型为void,可以使用return跳出函数,但是不能使用return返回数据。

(4)可以返回对象。

方法调用:

因为封装,不能直接访问其他对象的成员变量,通常是调用其他对象的方法。

方法调用有两种情况:

调用相同类中的方法:可以直接调用。(本质上是使用this关键字调用)

调用其它类中的方法:对象.方法名

构造方法的语法:

构造方法的作用:开辟内存空间,创建实例,初始化属性值。

构造方法的特点:

(1)方法名与类名相同

(2)不能声明返回类型

(3) 不能使用return语句返回值

(4) 通常为Public 

注意:

1、如果没有明确提供构造方法,则系统会提供一个默认的构造方法,默认构造方法(也成为缺省构造方法)没有参数

2、如果我们提供了一个构造方法,则系统不再提供无参数的默认构造方法。

3、如果我们提供了一个有参数的构造方法,同时又需要无参构造方法的话,则必须同时提供一个无参的构造方法 

类与对象:

(1)类是一种逻辑结构,对具有公共属性特征和行为(功能)的一个群体进行描述。

(2)定义了类之后,就可以根据类创建(new)出一个实例。

类的方法:

方法是对象行为特征的抽象,类具有的共性的功能操作,称之为方法。方法是个“黑匣子”,完成某个特定的应用程序功能。

注意:

方法中定义变量称为局部变量。

如果没有返回值,则方法的返回类型必须为void

当方法有具体的返回类型时,则必须使用return语句返回一种值

面向对象——封装:

封装指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部的信息,而是通过该类所提供的方法来实现对内部信息的操作和访问

访问范围: 本类   本包   子类  < 全局(所有包)

访问修饰符:private  缺省(default) < protected  < public

封装的通常做法:

(1)将类的属性的访问权限设置为private,提供访问权限为public的set和get方法。在有些情况下不提供set和get方法,有时只提供其中的一个。

(2)提供合理的构造方法,即开发相应参数的构造方法,方便实例化对象。

(3)类的全部或部分方法的访问权限为public,类的公有方法是类对外开放的接口,供外部代码使用类的功能。类的私有方法通常是辅助方法实现部分功能,供类的公有方法调用。

方法重载基础:

在类中可以定义名称相同的方法:只要形参列表不同即可。

特点:

1、方法名相同

2、形参列表不同:形参的类型/顺序、形参的个数

注意的地方:

1、返回值在区分重载方法时不起作用。修饰符也不起作用

2、当调用重载方法时,Java使用参数的类型和/或数量确定实际调用哪个版本。

数组的概念:

一个具有固定大小,可以容纳相同类型数据的集合.

数组元素的类型:可以是基本类型,也可以是引用类型

创建数组需要注意的问题:

1、创建数组时必须知道数组的长度,否则new不知道要开辟多大的内存

2、第二种方式创建数组,必须在声明数组的同时创建数组

3、创建数组之后,数组的长度不能再改变。

继承的语法:

继承使用关键字 extends(扩展)实现

继承的说明:

超类就是父类

派生类就是子类

(1)子类不能从父类继承的资源:

私有方法、构造方法、如果子类与父类在不同包中,子类不能继承父类中那些具有默认访问权的方法。即不能继承那些不能访问的方法。在子类中不能访问到的那些方法,无法继承的

理论上子类会继承父类的全部成员变量,但是子类不能访问父类的私有成员变量,如果子类与父类在不同包中,子类也不能访问父类中具有默认访问权限的成员变量。

(2)JAVA类继承只允许单继承(只能有一个超类);JAVA中接口允许多继承。

(3)子类中可以定义与父类中同名的成员变量,这时子类的成员变量会隐藏\覆盖父类中的同名成员变量。

(4)子类中也可以定义与父类中同名的成员方法,这是子类中的方法重写了父类中的同名方法

子类的构造方法:

(1)构造方法的调用顺序:

在类继承层次中按照继承的顺序从父类到子类调用构造函数。

(2)在子类的构造方法中,一定会调用父类的构造方法。super();

(3)子类的每个构造方法都会隐式的调用父类的无参数构造方法,如果想调用父类的其他构造方法,必须使用super(参数列表)来显式调用。

说明:编写类时,通常需要提供无参数构造方法。

(4)如果父类没有无参的构造方法,或者想调用父类的有参构造方法,则在子类的构造方法中必须显示使用super(xxx)调用父类有参构造方法。这时super(xxx)必须是子类中的第一条语句。

(5)通常的做法:

在父类中定义有参数的构造方法,负责初始化父类的成员变量。

在子类的构造方法中,先调用父类的构造方法完成从父类继承来的那些成员变量,然后初始化子类中特有的成员变量。

注意:

如果父类中定义了一个有参数的构造方法,系统就不会在为父类提供默认的构造方法。这时,在子类的构造方法中,必须使用super(xxx)显示调用父类的有参构造方法

方法重写介绍:

当子类从父类中继承的方法不能满足需要时,子类可以重写该方法,重写方法要求方法名与参数列表都相同。

多态的概念:

同一个方法名称,执行不同的操作。

方法重写的规则:

两同:方法名相同、参数列表相同

两小:返回值类型更小(子类)或相等、抛出的异常更小或相等

一大:访问权限更大或相等

方法重写与方法重载的区别:

只有当两个方法名称和形参列表都相同时才会发生重写。如果不是都相同那么这两个方法就只是简单的重载关系

final修饰变量、方法、类:

如果final 修饰变量,变量就是常量,常量不可以修改,定义时必须初始化

如果final 修饰方法,方法就不能被子类重写

如果final修饰类,类就不能在被扩展,不能在有子类。JAVA类库中的String、Math就是final类

引用类型的常量

如果常量是基本数据类型,不可以再修改。

如果常量是引用类型,不能再将其它对象赋给该引用,但可以使用该引用改变独享内部的属性。

Object类介绍:

所有其他类都是Object的子类。也就是说,Object是所有其他类的超类。这意味着Object类型的引用变量可以引用任何其他类的对象。此外,因为数组也是作为类的实现,所以Object类型的变量也可以引用所有对象都可以使用这些方法。

static关键字

在正常情况下,只有通过组合类的对象才能访问该类的成员。有时可能希望定义能够独立于类的所有对象进行使用的成员。为了创建这种成员,需要在成员声明的前面使用关键字static。例如Math类中的方法,就是静态方法。

静态变量:

特别注意

(1)被声明为静态的变量本质上是全局变量,类的所有实例共享相同的静态变量。因此,通过一个对象修改静态变量的值后,通过该类的其他对象访问到的静态变量是修改后的值。

(2)访问静态变量的方式:

类名.变量名(推荐)

对象.变量名(不推荐)

(3)初始化时机

静态变量:当类被虚拟机加载,静态变量就初始化,既不需要创建类的对象就可以使用静态变量

静态方法

最典型的静态方法是main()方法;

静态的方法有几个限制

l 它们只能直接调用其他静态方法。

l 它们只能直接访问静态数据

它们不能以任何方式引用this或super关键字

关于static的几点说明

1、static的本质作用是区分成员属于类还是属于实例

2、通常把使用static修饰的变量和方法称为类变量和类方法,有时也称为静态变量和静态方法,把不使用static修饰的变量和方法称为实例变量和实例方法

3、对于使用static修饰的成员,既可以通过类来调用也可以通过类的实例调用,但是建议使用类调用静态成员。对于实例变量和实例方法,则只能通过类的实例调用。

this关键字

在类的内部,可以在任何方法中使用this引用当前对象。

使用this关键字解决在实例变量和局部变量之间可能发生的任何名称冲突。

局部变量,包括方法的形参,可以和类的实例变量重名。当局部变量和实例变量具有相同的名称时,局部变量隐藏了实例变量。

supper关键字

关键字super用于调用\访问从父类中继承来的实例变量和方法。

super有两种一般用法。第一种用于调用超类的构造方法,第二种用于访问超类 中子类的某个成员隐藏的成员。

使用super()调用父类的构造方法。

在子类中使用super()调用父类的构造方法,必须是第一条语句

在本类中可以使用this()调用重载的构造方法,也必须是第一条语句

在子类的构造方法中this()和super不能同时使用

使用super访问父类中被子类隐藏的成员变量。

父类的属性被子类继承,如果子类又提案加了名称相同的属性,则子类有两个名称相同的属性,如果父类型对象调用属性,就是父类的,如果是子类型对象调用就子类的属性。

一个子类需要引用它的直接超类,都可以使用super

自动装箱与自动拆箱:

自动装箱是这样一个过程,只需要基本类型的对象,就自动将基本类型自动封装(装箱)进与等价的类型包装器中,而不需要明确的构造对象。自动拆箱是当需要时自动抽取(拆箱)已装箱对象数值过程。不需要调用inValue()或doubleValue()这类方法

自动装箱和自动拆箱特性极大的简化了一些算法的编码,移除了单调乏味的手动装箱和拆箱数值操作。它们还有助于防止错误。此外,它们对于泛型非常重要,因为泛型只能操作对象。最后,集合框架需要利用自动拆箱特性进行工作。

String类:

(1)创建的每个字符串实际上都是String类的对象。即使是字符串字面值实际上也是String对象。

(2)String类型的对象是不可变的;一旦创建了一个String对象,其内容就不能在改变。即,一旦创建了一个String对象,就蹦改变该字符串包含的字符。

所谓String类型对象中的字符串是不可改变的,是指创建了String实例后不能修改String实例的内容。但是可以修改String引用变量,使其指向起他String对象。

当每次需要已存在字符串的修改版本时,会创建包含修改后内容的新String对象。原始字符串仍然没有改变。使用这种方法的原因是实现固定的、不能修改的字符串与实现能够修改的字符串相比效率更高。

(3)对于那些需要能够修改的字符串的情况,JAVA提供了两个选择:StringBuffer和StringBuilder。这两个类都包含创建之后可以进行修改的字符串。

(4)String、StringBuffer和StringBuilder类都是在JAVA.lang包中定义的。这三个类都实现了CharSequence接口

  • 18
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我会尽力回答你的问题。针对USB接口程序设计,我们需要先了解一些基础知识: 1. USB是什么? USB(Universal Serial Bus)是一种用于连接计算机与外部设备的串行总线标准,可用于数据传输、充电和供电等多种用途。 2. USB接口类型 USB接口按照接口类型分为USB Type-A、USB Type-B、mini-USB、micro-USB等多种类型。 3. USB接口规范 USB接口规范包括USB1.0、USB2.0、USB3.0等多个版本,每个版本都有自己的传输速度和功能特性。 在了解了上述基础知识后,我们可以开始设计USB接口程序。具体步骤如下: 1. 定义一个接口类Usb,在该类中定义一个抽象方法,用于实现数据传输功能。 ```java public interface Usb { void transferData(); } ``` 2. 定义一个USB设备类,该类实现了Usb接口,并实现了接口中的抽象方法,用于实现具体的数据传输功能。 ```java public class UsbDevice implements Usb { @Override public void transferData() { System.out.println("USB设备传输数据"); } } ``` 3. 定义一个主机类,该类也实现了Usb接口,但是该类的transferData方法中不是实现传输数据的功能,而是调用USB设备类的transferData方法,从而实现数据传输。 ```java public class Host implements Usb { private Usb usbDevice; public Host(Usb usbDevice) { this.usbDevice = usbDevice; } @Override public void transferData() { usbDevice.transferData(); } } ``` 4. 在主函数中实例化USB设备类和主机类,并调用主机类的transferData方法,从而实现数据传输。 ```java public static void main(String[] args) { UsbDevice usbDevice = new UsbDevice(); Host host = new Host(usbDevice); host.transferData(); } ``` 这样,我们就完成了一个简单的USB接口程序设计。当然,实际情况中,USB接口程序可能会更加复杂,需要考虑更多的因素,例如不同类型的USB接口、不同版本的USB规范等等。同时,我们还需要注意USB接口程序的稳定性和可靠性,以确保程序的正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值