Java最常见基础知识总结

简介: Java最常见基础知识总结

一.基本数据类型


整数型 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.Java虚拟机


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.2Objectequals方法

定义形式:public boolean equals()

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

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

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

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

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

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

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

3.多态****


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

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


作者:zhulin1028

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章
|
1月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
67 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
5月前
|
Java
【Java基础】输入输出流(IO流)
Java基础、输入输出流、IO流、流的概念、输入输出流的类层次结构图、使用 InputStream 和 OutputStream流类、使用 Reader 和 Writer 流类
168 2
|
2月前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
5月前
|
安全 Java
|
5月前
|
安全 Java 编译器
杭州 【Java基础知识 11】java泛型方法的定义和使用(学习+改进+自己理解,想法) (借鉴-侵-删)
杭州 【Java基础知识 11】java泛型方法的定义和使用(学习+改进+自己理解,想法) (借鉴-侵-删)
41 1
|
5月前
|
搜索推荐 算法 Java
【Java基础】 几种简单的算法排序
几种简单的JAVA算法排序
53 4
|
6月前
|
Java 调度 开发者
Java中的多线程编程:基础知识与实践
【5月更文挑战第29天】 在现代软件开发中,多线程编程是一个不可忽视的领域。特别是在Java这种广泛使用的编程语言中,掌握多线程的概念和技术对于开发高效、响应迅速的应用程序至关重要。本文将深入探讨Java多线程的核心概念、实现机制以及常见问题的解决方案。我们将从基础出发,逐步揭示如何通过多线程提升程序性能,并且讨论并发编程中的挑战和解决策略。文章的目的是为开发者提供一个清晰的多线程编程指南,帮助他们在实际项目中有效地应用这些知识。
39 3
|
6月前
|
Java 开发者
Java中的多线程编程:基础知识与实践
【5月更文挑战第26天】 在现代计算机科学中,多线程编程是一个复杂且强大的概念。Java作为一种广泛使用的编程语言,其对多线程的支持使得开发者能够创建出更为复杂、高效和响应迅速的应用程序。本文将深入探讨Java中的多线程编程,从基础概念到实际编程技巧,为读者提供全面的理解和实践指导。
|
6月前
|
监控 IDE Java
Java中的多线程编程:基础知识与实践
【5月更文挑战第30天】 在现代软件开发中,多线程编程是提高应用程序性能和响应能力的关键。特别是在Java这样的多平台、多用途的编程语言中,掌握多线程技术至关重要。本文旨在为读者提供有关Java多线程编程的全面介绍,从基本概念到高级应用技巧,帮助初学者和有经验的开发者理解并有效使用多线程。文章不仅涉及基础理论,还包括代码示例和最佳实践,确保读者能够将知识应用于实际项目中。
|
6月前
|
Java 程序员 调度
Java中的多线程编程:基础知识与实践
【5月更文挑战第28天】 在现代计算机科学中,多线程编程是一个重要的概念,它允许程序同时执行多个任务。在Java中,多线程编程是通过创建并管理线程来实现的。本文将介绍Java中多线程编程的基础知识,包括线程的概念、创建和控制线程的方法,以及线程同步和通信的相关技术。通过阅读本文,读者将对Java中的多线程编程有一个全面的了解,并能在实际编程中应用这些知识。