Java最常见基础知识总结

244 阅读11分钟

「这是我参与11月更文挑战的第7天,活动详情查看:2021最后一次更文挑战」​

一.基本数据类型

整数型 byte 1个字节 short 2个字节 int 4个字节(默认的) long 8个字节

文本型 char 2个字节 (声明变量时要加上单引号)

布尔型 Boolean 其值只有2个,true fase 默认初始值是fase

浮点数类型 float double float声明时 后面要加l 默认是double float占4个字符 double占8个字符。

二.数组:

概念:数组就是一组有顺序,具有相同数据类型的数据集合,也可以说是,用来存储一组相同数据类型的数据结构。(引用类型)

就是一个小整体,在整个程序中被看作是一个对象,而数组中每一个元素都可以看作是数组的成员变量。(自己理解的)

1.声明数组

  1. 数组元素名 数组名 [];2.数组元素名 []数组名;

创建数组:

  1. 利用 new关键字创建。格式:数组名=new 数组元素的数据类型[整数元素个数]
  2. 声明数组和创建数组同时完成。格式:int [] x = new int [100].

2.数组的初始化

  1. 先定义在初始化(动态初始化):int [] ia = new int[4];  ia[0]=1; ia[1]=2;ia[a]=3
  2. 定义数组同时为数组元素分配空间并赋值(静态初始化):int [] ia = {1,2,3};

或int [] ia = new int[]{1,2,3};

3.数组的引用

引用方式:arrayName[index]。Index是数组的下标,描述了元素从数组中相对位置,(元素下标从0开始)

4.一维数组

选择排序:获取当前没有排好序中的最大元素和数组最右端的元素交换,循环这个过程即可实现对整个数组排序。

冒泡排序:依次两两比较排序元素,将带排序元素从左至右比较一遍称为一趟“冒泡”。

          每趟冒泡都将带排序列中的最大关键字交换到最后位置。

5.栈内存与堆内存的关系

数组的引用保存在占内存中,在堆内存中开辟一片空间(连续的),然后栈内存上的引用指向这片空间的首地址。

三.基本语法

标识符:可以自己起名字的都叫标识符,都遵循标识符的命名规则。

标识符命名规则:

标识符由字母、数字、下划线“_”和美元符“$”开头。

标识符对大小写敏感,长度无限制。

取名应见名知意,且不能与关键字重名。

Java约定:

类名的首字母要大写。

变量名和方法名的首字母要小写,关键字要小写。

常量名全部字母大写。

运用驼峰标志。

字符变量:

‘\n‘是换行符;

‘\t‘是制表符,相当于table键;

‘\b‘是退格键,相当于Back Space;

‘\‘‘是单引号,而‘\“‘是双引号;

‘\‘是一个斜杠“\”。

四.控制结构****

If:if··else 只有一句需要执行的语句时可以省略{} 等号两边不用空格

For:形式:for(表达式1;表达式2;表达式3;){语句;}执行时判断是否结束的是表达式2,如果表达式2是false输出结果。

While/do··while:while:先判断在执行,do···while:先执行在判断。(无论是否满足表达式,都先执行一遍)

Switch:条件补充语句:格式case xx; case xx; default ;在需要输出case值时用break语句,多个case可以合并到一起。

Break/continue:break语句终止某个语句块的执行,在循环语句中可以强行退出循环 continue 终止某一次循环,跳过这次循环,开始下一次循环过程。

If 语句:

public class test {

public static void main (String[] args) {

int i = 50;

if ( i < 20 ) {

System.out.print("i < 20" );

}

else if ( i < 40 ){

System.out.print("i < 40 ");

}

else if ( i < 60 ){

System.out.print("i < 60 ");



}

else if ( i >60 ){

System.out.print("i >=60 ");

}

}

}//最终输出i<60

For语句

public class adf {

public sta ic void main(String[] args) {

long result = 0;

long f = 1 ;



for (int i = 1; i <= 10; i++)  {

f = f * i;

result +=f;

}

System.out.print("result =" +result );

}



}//最终输出result= 4037913

Switch和break

public class testswitch {

public static void main (String[] args) {

int i = 5;

switch (i){

case  5 :

System.out.print("e");

 break;

case 1 :

case 4 :

System.out.print(14);

default :

System.out.print("wang");

}

}

}//最终输出e

五.Java虚拟机的概念,JDK的概念

1. J ava虚拟机

Java虚拟机是抽象的计算机,是java语言的运行环境。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域、还有相应的指令系统。

特点:

Java虚拟机是实现java跨平台的关键。

JDK概念:java开发工具。

JDK包含的基本组件:

javac – 编译器,将源程序转成字节码

jar – 打包工具,将相关的类文件打包成一个文件

javadoc – 文档生成器,从源码注释中提取文档

jdb – debugger,查错工具

java – 运行编译后的java程序(.class后缀的)

appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。

Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。

Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。

Jconsole: Java进行系统调试和监控的工具

Java程序的命令行编译、运行

六.类的封装性

通常将类声明为private(私有类)然后在用public(公共方法) 对这个变量进行访问。

对一个变量的操作通常是赋值(setXX)和读取(getXXX)

类的封装有2层意思:

将数据和对数据的操作组合起来构成类,类是一个不可分割的独立单位。

类中既要有与外部联系的方法,同时也要尽可能的隐藏类的实现细节。

七.方法的调用,静态方法和实例方法

1.方法的调用

方法与方法重载

形式参数:在方法被调用的时候用于接受外部传入的数据的变量。

实际参数:在方法被调用的时候实际传给XX的值

参数类型:形式参数的数据类型。

返回值:方法在执行完毕之后还调用它的程序的数据,如没有必须给出返回值类型void。

返回值类型:函数要返回的结果的数据类型。

Java语言中使用下属形式调用调用方法:对象名,方法名,(实参列表)

实参的数目、数据类型和次序必须和所调用方法声明的形参列表匹配

Return语句终止方法的运行并指出要返回的数据。

只有涉及到方法的时候才用到形参和实参,

调用方式:

1.如果方法没有返回值或调用方法不关心方法的返回值,可以下面的格式调用定义的函数;

方法名(实参1,实参2,·····)

2.如果调用程序需要返回结果,可以下面的格式调用定义的函数;

变量=方法名(实参1,实参2,·····)

3.对于有返回值的方法调用,也可以在程序中直接使用返回的结果。

4.实参的数目、数据类型和次序必须与所调用方法声明的形参列表匹配。

方法的重载:

Return语句:终止方法的运行并指定要返回的值,然后把控制权交给调用它的语句。

格式:return【返回值】; retrun;

一个类中可以同时存在名字相同,参数不同(个数或类型)不同的多个方法。

调用时,编译器会根据不同的参数列表选择对应的方法。

为了程序的可读性,最好重载相同含义的方法、

不能以不同的返回值来区别重载的方法。

2.静态方法和实例方法

静态方法是使用公共内存空间的,所有对象都可以直接引用,不需要创建对在使用JAVA中使用静态方法

编程时我们心里一定要清楚静态方法类的非静态方法方法的区别:

最根本区别从编译角度来说吧:

  1. 静态(static)方法是编译时直接加载加载到内存中(离cpu最近的一块内存区域也称为堆栈),比如程序的public static main(args []){}方法。静态方法不能被实例化,也不允许被实例化!

因此你可以通过“类名”+“.”+“静态方法的名()”来调用

2)非静态方法(类的非静态方法)通过关键字 “new” 字来实例化一个对象(object),这个对象放在内存的另一块区域堆(heap)中。

也就是说编译时,非静态方法必须先实例化类的一个对象,通过“对象名”+“非静态方法名()”来调用,

或者是“对象引用(句柄)”+“.”+“静态方法的名()”;

静态变量:

1.类的静态变量可以

直接引用,类的静态变量相当于某些程序语言的全局变量。

2.静态方法只能使用静态变量,不能使用实例变量。

3.类的静态变量只有一个版本,所有实例对象引用的都是同一个版本。

3、实例方法

实例方法也叫做对象方法。(非静态方法)

类方法是属于整个类的,而实例方法是属于类的某个对象的。

      由于类方法是属于整个类的,并不属于类的哪个对象,所以类方法的方法体中不能有与类的对象有关的内容。即类方法体有如下限制:

(1) 类方法中不能引用对象变量;

(2) 类方法中不能调用类的对象方法;

(3) 在类方法中不能使用super、this关键字。

(4)类方法不能被覆盖。

                 如果违反这些限制,就会导致程序编译错误。

与类方法相比,对象方法几乎没有什么限制:

(1) 对象方法中可以引用对象变量,也可以引用类变量;

(2) 对象方法中可以调用类方法;

(3) 对象方法中可以使用super、this关键字。

      在程序设计中,一些通用的、公用型的方法与类的对象无关,因此常常被作为类方法实现。如Java类库中Math类,其中多数的数学运算操作都被定义成静态方法。因此,可以使用类方法把一些通用的、公用型的方法放在合适的类中,从而很好地将它们组织起来。应用程序中的主方法main就是类方法。

八.面对对象编程的三个表现

1.子类继承父类

Java继承特点:只能单继承不支持多继承,具有层次结构,子类继承了父类的方法和属性。

构造方法:

子类继承父类所有的成员方法,但不继承父类的构造方法。子类可在自己的构造方法中调用父类的的构造方法。 Super()或 super(参数列表)

2.方法的重写:

在子类中可以根据需要对从基类继承来的方法进行重写。

重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型。

重写方法不能使用比被重写方法更严格的访问权限。

如:父类中的方法是public的,那么子类中的方法就不能是private的。

子类和父类的方法具有相同的名称和类型,用子类调用子类中的重写方法,super.成员用于调用父类中的成员。

Final 声明的方法,属性,类不能被子类引用————最终方法,属性,类。

标记的常量只能赋一次值,不能被改变。

用public static final 共同标记常量时,这个常量就成了全局常量,只能在定义时赋值。

Public static final pe = 3.1415;

Object类:类中的最高层,是所有类的父类。

2.1Object 中的toString方法

定义形式:public String toString()

在进行String与其它类型数据的连接操作时(如:System.out.println(“info ” +obj)),将自动调用该对象类的toString()方法。

通常情况下,重写toString()方法,返回对象的有用信息。

2.2 Object equals 方法

定义形式:public boolean equals()

此方法提供了比较对象是否相等的逻辑

Object的equals方法定义为:x.equals(y)当x和y是同一个对象的引用时返回true,否则返回false。

通常情况下,想要比较对象内容是否相等,需要重写equals方法。

对象的类型转换: 一个基类的引用类型变量可以“指向”其子类的对象。

一个基类的引用不可以访问其子类对象新增加的成员(属性和方法)。

可以使用引用变量 instanceof 类名 来判断该引用类型变量所“指向”的对象是否属于该类或该类的子类。

子类的对象可以当作基类的对象来使用称作向上转型(自动转换),反之称为向下转型(强制转换)。

3.多态****

多态性:一种方法,可以多种实现版本,即一种定义,多种实现。类的多态性提供方法设计的灵活性和执行的多样性。

存在的三个条件:有继承,有方法重写,父类引用指向子类对象