• 0

  • 493

Java基础知识

猿人不正经

不想写代码

1 month ago

文章目录

一. 引言

1. 计算机程序

计算机本身是一个存储数据(数字、单词、图片)并与设备(监视器、音响系统、打印机)交互以及执行程序的机器

计算机程序(Computer Program):是一个指令和判断序列

计算机程序会详细的告诉计算机完成一个任务所需的步骤序列

2. 编程

编程:是设计和实现计算机程序的行为

算法:无歧义、可执行而且将终止的一个步骤序列

伪代码:是对解决问题的步骤序列的非正式描述

3. Java编程语言

要编写一个计算机程序,你需要提供CPU能够执行的一个指令序列

使用高级语言时,你只需要指定程序应当完成的动作,由编译器(compiler)将这些高级语言指令翻译成CPU所需的更详细的指令(机器指令)

4. Java发展历程

1995年5月23日,Java语言诞生;

1996年1月,第一个JDK-JDK1.0诞生;

1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入Java技术;

1996年9月,约8.3万个网页应用了Java技术来制作;

1997年2月18日,JDK1.1发布;

1997年4月2日,JavaOne会议召开,参与者逾一万人,创当时全球同类会议纪录;

1997年9月,JavaDeveloperConnection社区成员超过十万;

1998年2月,JDK1.1被下载超过2,000,000次;

1998年12月8日,Java 2企业平台J2EE发布;

2001年6月5日,Nokia宣布到2003年将出售1亿部支持Java的手机;

2001年9月24日,J2EE1.3发布;

2002年2月26日,J2SE1.4发布,此后Java的计算能力有了大幅提升;

2004年9月30日,J2SE1.5发布,成为Java语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE1.5更名为Java SE 5.0;

2005年6月,JavaOne大会召开,SUN公司公开Java SE 6。此时,Java的各种版本已经更名,以取消其中的数字“2”:
J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME;

2009年12月,SUN公司发布Java EE 6;

2010年11月,由于甲骨文对Java社区的不友善,因此Apache扬言将退出JCP;

2011年7月28日,甲骨文发布Java SE 7;

2014年3月18日,甲骨文发表Java SE 8。

5. Java从编写到运行

(1). 启动Java开发环境

(2). 在编辑器上编写Java程序

(3). 运行Java程序

在这里插入图片描述
为了运行程序,Java编译器把源文件(source file)转换为类文件(class file),类文件包含面向对象Java虚拟机的指令。

编译器将源代码转换为虚拟机指令之后,虚拟机会执行这些指令。

执行过程中,虚拟机会访问一个预先写好的代码库,其中包括System和PrintStream类的实现,这是显示程序输出必不可少的类

(4). 组织工作

一定要了解你的文件位于文件夹层次体系中的什么位置。
提交文件进行评分和建立备份副本时,这个信息至关重要。
在这里插入图片描述

6. JVM、JRE 与 JDK 的关系

在这里插入图片描述

(1). JVM

JVM 全称 Java Virtual Machine 是java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行。

也就是说.class文件并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。

JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

(2). JRE

JRE 全称 Java Runtime Environment 是java运行时环境,这里面包含了运行java程序所需要的所有类库,一台机器上只有安装了JRE才可以运行java程序

JRE 是包含 JVM的,并且还包含了一些运行java程序所需要的类库和资源文件等。

(3). JDK

JDK 全称 Java Development Kit 是java开发工具包,是Sun Microsystems针对Java开发员的产品。JDK 中包含了很多关于java程序开发的工具,例如编译工具javac,文档生成工具javadoc等等等等。

同理,JDK是包含JRE 和 JVM 的,并且在此基础上还包括了一些开发工具,调试工具,以及用于管理程序的管理工具等。

7. Java实现跨平台的原理

这里要从java的编译方式说起,java源代码编译之后并不是直接生成一个可执行文件(.exe),而是生成对应的java字节码文件(.class),这个字节码电脑的并不能运行,而是需要java虚拟机来再次进行解释,才能被cpu执行,也就是说,java程序并不是直接运行在cpu上的,而是运行在java虚拟机JVM上面的。

对于不同的从操作系统,有不同的java虚拟机。虽然是不同的虚拟机,但是他们可以识别相同的字节码文件。这样,就达到了一次编译,到处运行的目的,也就是java跨平台的原理。

在这里插入图片描述

二. Java语言基础

1. Java主类结构

(1). 定义

Java语言是面向对象的程序设计语言,Java程序的基本组成单元是类,类体中又包括属性与方法。

每一个应用程序都必须包含一个main()方法,含有main()方法的类称为主类。

(2). Java类包

在Java中每定义好一个类,通过Java编译器进行编译后,都会生成一个扩展名为.class的文件。

当程序的规模逐渐扩大时,就很容易发生类名称冲突,所以Java提供了一种管理类文件的机制:包

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

1. 完整的类路径

在这里插入图片描述

	例如:一个程序中同时使用到java.util.Date类和java.sql.Date类,
	如果在程序中不指定完整类路径,编译器不会知道这段代码使用的是java.util类包
	还是java.sql类包中的Date类的完整类路径

注:同一个包中的类相互访问时,可以不指定包名

2. 创建包

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注:在Java中包名设计应该与文件系统结构相对于,如一个包名为com.dzq,那么该包的类位于com文件夹下的子文件加dzq文件夹下。
没有定义包的类会被归纳到预设包(默认包)下。

3. 定义包

语法格式:package 包名

使用package关键字为类指定包名之后,包名将会成为类名中的一部分,预示着这个类必须指定全名

例如使用位于com.dzq包下的Dog.java类时,需要使用形如com.dzq.Dog这样的表达式

注:Java的包命名规则全部使用小写字母

为了避免Java中的包名冲突,通常在Java中定义包名时使用创建者的Internet域名的反序,由于Internet域名是独一无二的,包名自然不会发生冲突。

4. 导入包

  1. 使用import关键字导入包

    语法:

     import com.dzq.*;		//指定com.dzq包中的所有类在程序中都可以使用
     import com.dzq.Math;	//指定com.dzq包中的Math类在程序中可以使用
    

    注意:

     如果类定义中已经导入com.dzq.Math类,
     在类体中再使用其他包中的Math类时就必须指定完整的带有包格式的类名,
     如再使用java.lang包中的Math类,就必须使用全名java.lang.Math
     
     当使用import指定一个包中的所有类时,并不会指定这个包的子包中的类
    
  2. 使用import导入静态成员

    JDK5.0以上版本支持import关键字导入包之外,还可以导入静态成员。

    语法:

     import static 静态成员
    

    实例:

     分别使用import static导入java.lang.Math类中的静态成员方法max()和
     java.lang.System类中的out成员变量,这时就可以在程序值直接引用这些静态成员
    
    package com.dzq;
    
    import static java.lang.Math.max;	//导入静态成员方法
    import static java.lang.System.out;	//导入静态成员变量
    
    public class ImportTest {
          
    	public static void main(String[] args) {
          
    		//在主方法中可以直接使用这些静态成员
    		out.println("1和4的较大值为:"+max(1,4));
    	}
    }
    

    在这里插入图片描述

5. Java管理源文件和类文件

在Java中将Java源文件和类文件放在一起管理是极为不好的方式。
可以在编译时使用-d参数设置编译后类文件产生的位置。

例如:在CMD下进入程序所在根目录,执行
javac -d ./bin/./com/dzq/*.java

这样编译成功之后将在当前运行路径下的bin目录产生com/dzq路径,
并在该路径下出现相应的源文件的类文件

使用Eclipse编译器,并在创建项目时设置了源文件与输出文件的路径,
编译后的类文件会自动保存在输出文件的路径

在这里插入图片描述
在这里插入图片描述

(3). 声明成员变量和局部变量

通常将类的属性称为类的全局变量(成员变量), 将方法中的属性称为局部变量。

全局变量声明在类体中,局部变量声明在方法体中。
全局变量和局部变量都有各自的应用范围

(4). 编写主方法

main()方法是类体中的主方法。

该方法的public、static、void分别是main()方法的权限修饰符、静态修饰符、返回值修饰符,Java中的main()方法必须声明为public static void。

String[] args是一个字符串类型数组,他是main()方法的参数。

main()方法是程序开始执行的位置

2. 基本数据类型

在这里插入图片描述

(1). Java数据类型在内存中的存储

基本数据类型的存储原理:所有的简单数据类型不存在“引用”的概念,基本数据类型都是直接存储在内存中的内存栈上的,数据本身的值就是存储在栈空间里面,而Java语言里面八种数据类型是这种存储模型;

引用类型的存储原理:引用类型继承于Object类(也是引用类型)都是按照Java里面存储对象的内存模型来进行数据存储的,使用Java内存堆和内存栈来进行这种类型的数据存储,简单地讲,“引用”是存储在有序的内存栈上的,而对象本身的值存储在内存堆上的;

区别:基本数据类型和引用类型的区别主要在于基本数据类型是分配在栈上的,而引用类型是分配在堆上的

(2). 整数类型

(3). 浮点类型

(4). 字符类型

(5). 布尔类型

(6). String类型

1. 声明字符串

2. 创建字符串

3. 连接字符串

4. 获取字符串信息

5. 字符串操作

6. 格式化字符串

7. 使用正则表达式

8. 字符串生成器

3. 变量和常量

(1). 标识符和关键字

(2). 变量

声明变量

定义变量就要告诉编译器这个变量的数据类型,这样编译器才知道需要配置多少空间给他,以及它能存放什么样的数据

程序运行过程中,空间的值是变化的,这个内存就称为变量

为了便于操作,给这个空间取个名字,称为变量名。内容空间的值就是变量值

变量的有效范围

由于变量被定义出来之后只是暂时存在内存中,等到程序执行到某一点,该变量会被释放掉,也就是说变量有他的生命周期。

根据变量有效范围将变量分类:

  1. 局部变量

  2. 成员变量

(3). 常量

4. 运算符

(1). 赋值运算符

(2). 算术运算符

(3). 自增自减运算符

(4). 比较运算符

(5). 逻辑运算符

(6). 位运算符

(7). 三元运算符

(8). 运算符的优先级

5. 数据类型转换

(1). 隐式类型转换

(2). 强制类型转换

6. 代码注释和编码规范

三. Java流程控制

1. 复合语句(顺序语句)

2. 条件语句

(1). if条件语句

(2). switch多分支语句

3. 循环语句

(1). while循环语句

(2). do…while循环语句

(3). for循环语句

(4). break语句

(5). continue语句

四. Java数组

1. 数组概述

2. 一维数组

(1). 创建一维数组

(2). 初始化一维数组

(3). 使用一维数组

3. 二维数组

(1). 创建二维数组

(2). 初始化二维数组

(3). 使用二维数组

4. 对数组的基本操作

(1). 遍历数组

(2). 对数组进行排序

(3). 填充替换数组元素

(4). 复制数组

(5). 数组查询

免责声明:文章版权归原作者所有,其内容与观点不代表Unitimes立场,亦不构成任何投资意见或建议。

java

493

Relevant articles

未登录头像

No more data