1、Java基本介绍(java简介、JDK、运行机制、API文档、进制)

Java知识点总结:想看的可以从这里进入

1、基础概述


1.1、软件开发

软件就是一系列人为组织好的指令的集合,它分为系统软件(windows、mac、linux)和应用软件(应用)。

我们在开发过程中与计算机的交互方式一般分为两种:

  1. 图形化界面GUI:交互较为简单,现在我们使用手机电脑的页面都是图形界面

  2. 命令行方式CLI::交互需要一些特定的指令,比如DOS窗口、Linux等

    常用的DOS指令:
    win+R键,输出cmd可以打开DOS窗口
    盘符: 进入不同的盘(c:、d:)
    dir 列出当前目录内的文件夹和文件
    cd 进入指定的目录
    md 创建新的目录
    rd 删除目录
    cd.. 返回上一级目录
    cd\ 返回到根目录
    del 删除文件
    exit 退出DOS命令行
    

开发软件需要学习计算机语言,计算机语言就是人与计算机交互的方式,就类似于我们的汉语、英语一样。它的种类很多:C、C++、Java、PHP、Python等等。

  1. 第一代语言:机器语言,指令是以二进制代码形式存在的
  2. 第二代语言:汇编语言,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。目前汇编语言主要应用在计算机底层设计,比如单片机等。
  3. 第三代语言:高级语言,就是目前主要学习的语言。
    • C语言:面向过程的语言
    • C++:面向过程+面向对象
    • Java、Python:面向对象

1.2、Java简介

Java是一门面向对象的程序设计语言,起源于Sun Microsystems 公司1991年的Green项目,由 James Gosling和同事们共同研发,于1996年发布JDK1.0版本,最初名字oak,后改名java。2010 年 Oracle 公司收购 Sun Microsystems,之后由 Oracle 公司负责 Java 的维护和版本升级。Java在发展期间,有两个比较重要的版本,分别是2004年的JDK1.5版本(更名为JDK5.0),2014年的JDK8.0。

Java的体系平台:

按应用范围,Java 可分为 3 个体系
1、JavaSE:平台标准版(基础),包含了java语言基础、JDBC 操作、I/O 操作、网络通信以及多线程等技术
2、JavaME:移动平台的嵌入式开发(基本淘汰)
3、JavaEE:企业级开发,web,服务器开发,以JavaSE为基础,是Java能流行的根本所在。

它由 Java 虚拟机(Java Virtual Machine,JVM)和 Java 应用编程接口(Application Programming Interface,API)构成,已经嵌入了几乎所有的操作系统,所以Java拥有一次编写到处运行的特点。

特性:

1、简单性
2、面向对象
3、可移植性:跨平台运行,一次编写到处运行,java的核心优势
4、高性能
5、分布式:操作分布(不同主机上布置相关操作)和数据分布(数据存放在多个不同主机上)
6、动态性
7、多线程
8、安全性:考虑了网络/分布式环境
9、健壮性

基础知识图解:

image-20230120231747798

1.3、Java运行

运行机制:(编译+解释)java是先把源程序编译成字节码文件(.class),然后以解释的方式执行字节码。

1、编译型:程序执行之前,把程序编译成为机器语言的文件。执行效率高。
2、解释性:每执行一次就要翻译一次,效率比较低。

运行过程:

编写程序源代码(.java文件)→经过jdk的编译器→编译成字节码文件(.class)→字节码文件加载到虚拟机(JVM)→虚拟机解释执行.class文件→解释器解释成计算机语言→计算机读取

运行环境:(开发运行需要下载JDK 甲骨文公司

1、JDK(Java Development Kit):开发者工具包,是开发java程序的关键(包含JRE)
	- bin包:提供 JDK 工具程序(语言编译器、语言解释器等等)
	- include包:和JVM交互的头文件
	- lib包:类库
	- jre包:java运行环境
	- conf包:配置
2、JRE(Java Runtime Environment):java运行时环境,需要调用相关的类库后,JVM才能执行相关的.class文件。包含JVM
3、JVM(Java Virtual Machine):java虚拟机,属于虚拟的计算机,是java跨平台的核心部分。JVM直接运行在操作系统之上,不和硬件直接交互。
	- 字节码指令集
	- 寄存器
	- 栈:虚拟机栈、本地方法栈
	- 堆
	- 存储方法域
	- 垃圾回收。

JDK包含了JRE,JRE包含了JVM。

JVM就相当于一个独立的虚拟计算机,它架构在操作平台上,一面和Java源程序对接,一面和不同的计算机操作平台对接,而它的作用就是运行Java源程序编译后的字节码文件(.class),并根据不同的平台翻译成不同的机器码。所以Java才可以在不同的平台上运行。

可以说不同平台的JVM不同的本质是其中的解释器不同,因为解释器需要根据不同的平台,解释出不同的机器码。一个程序开始运行,虚拟机就开始实例化,多个程序就会存在多个虚拟机,虚拟机之间不能共享数据,程序关闭虚拟机实例消亡。

image-20230120231819352

1.4、JDK安装

1.4.1、安装

  • 登录JDK网站:JDK 。下载相应版本的的JDK

image-20210621103732996

image-20230120232001298

  • 安装:点击安装程序安装即可(安装的路径尽量不含中文)(带着版本号,方便后续更换版本)

  • 配置环境变量:计算机→右键选择属性→高级系统设置→环境变量

    • JAVA_HOME配置:更改不同的版本,这里配置的是哪个版本,使用的就是那个版本

      image-20220830173755487
    • 在path中配置变量:%JAVA_HOME%\bin 和 %JAVA_HOME%\jre\bin

      image-20220830173825383

  • 在cmd中输入命令测试是否安装成功:java -version

    image-20210621114837201

1.4.2、卸载

  • 删除JDK的安装目录
  • 在环境变量中删除配置的JAVA_HOME,删除path下关于java的目录
  • cmd中使用命令:java -version 检验

1.5、Hello Java

安装好JDK后可以编写一个程序测试一下,可以直接使用文本编辑器简单测试一下(建议下载Notepad++):新建一个文件,按Java的格式编辑好后,保存为.java后缀的文件。

public class HelloJava{
	/**
	*	这是一个main方法,用来运行
	*/
	public static void main(String[] args){
		String message = "Hello Java";
		//打印语句
		System.out.println(message);
	}
}

进入cmd,跳到文件所在的文件夹,先编译,编译后会产生一个.class的文件,然后再运行这个 .class的文件,进行输出:

image-20230118112508090image-20230118112610397

1.5.1、class类

public class 类名 表示这是一个类,我们的Java代码就是在一个个的类中进行编写的,其中class是一个关键字,表示为一个类,而public是一个修饰符,表示类是公开的,一个 .java 文件中可以写多个类,但是只能有一个类由public修饰符修饰,其此类的名字要和文件名相同。

而且类中的执行语句后面要以 ;结束。

public class HelloJava{
	public static void main(String[] args){
		String str ="";   //执行语句以 ;结束
	}
}
//一个文件中可以有多个类,但别public修饰的只能有一个
class Person{
}
class Student{
}

1.5.2、main方法

main是一个方法,它是一个程序的主入口,可以运行,会被JVM识别并自动加载。格式是固定的:

public static void main(String[] args) {

}

其中 public static void main(String[] 变量名) 这个格式是固定的,一个类最多只能有一个main函数(可以没有),程序的入口是main函数。(mian函数不是成员函数,无法被其他方法/类所调用)。

程序在运行时最先执行的就是main方法,JVM通过main找到需要启动的运行程序,并检查main所在的类是否被加载,如果没有就进行加载(mian方法的调用会优先于类,所以才会规定为public static)。mian方法内可以直接调用类的静态资源,非静态的可以通过new创建对象后再调用。

1.5.3、注释

注释在JAVA运行过程中是不执行的,它是为了方便程序员阅读代码。一些复杂的代码,可以在类上、方法上、和代码行上添加注释,可以更快速的帮助我们阅读代码的含义。

1、单行注释:idea快捷键 Ctrl+/
 //注释内容
2、多行注释:idea快捷键 Ctrl+Shift+/
 /*
 	代码
 */
3、文档注释:中间通常包含一些信息  idea快捷键 /**+Ent:放在类、接口、成员变量、方法之前,以通过 Javadoc 生成 API 帮助文档
 /**
 *@author (对类的说明)开发作者
 *@version(对类的说明)开发版本
 *@since	指明需要最早使用的JDK版本                    
 *@param (对方法的说明)方法中的参数说明
 *@return (对方法的说明)返回值
 *@see (对方法的说明)可以在注释中实现链接跳转.@see可以指向包,类,方法,属性.
 *@throws (对方法的说明)方法抛出的异常
 */
image-20220831100600989

1.6、输入和输出

//输入	Java.util.Scanner
	Scanner scanner = new Scanner(System.in);	//常见Scanner输入对象
	int a = scanner.nextInt();	//输入一个整数
	String str = scanner.next(); //输入一个字符串,无法带空格
	String str = scanner.nextLine(); //输入一个字符串,可含空格
	char c = scanner.next().charAt(0);	//输入字符串的第一个字符
	double d = scanner.nextDouble();	//输入一个double
	float f = scanner.nextFloat();	//输入一个float
//输出,打印 print
	System.out.print();		//不换行打印
	System.out.println();	//换行打印
	System.out.printf("",);	//格式化打印  整数%d、字符串%s、字符%c、实数%f
image-20220724105142809

1.7、规范

命名规范

  1. 包名由小写字母组成。

    1、个人项目
    	个体项目(individual:指个人发起,但非自己独自完成的项目,可公开或私有项目,copyright主要属于发起者。
    		包名为“indi.发起者名.项目名.模块名……”
    	单人项目(one-man):指个人发起,但非自己独自完成的项目,可公开或私有项目,copyright主要属于发起者。
    		包名为“onem.发起者名.项目名.模块名……”
    	个人项目(personal),指个人发起,独自完成,可分享的项目,copyright主要属于个人。
    		包名为“pers.个人名.项目名.模块名.……”
    	私有项目(private):指个人发起,独自完成,非公开的私人使用的项目,copyright属于个人。
    		包名为“priv.个人名.项目名.模块名.……”
    2、团体的项目命名
    	team:团队项目,指由团队发起,并由该团队开发的项目,copyright属于该团队所有。
    		包名为“team.团队名.项目名.模块名.……”
    	com :公司项目,copyright由项目发起的公司所有。
    		包名为“com.公司名.项目名.模块名.……”
    
  2. 类名每个单词大写字母开头,后续小写字母。驼峰式命名

  3. 对象名称第一个单词全小写,后面的单词由大写字母开头。

  4. 常量的名称都大写,并且指出完整含义。

  5. 参数的名称无其他具体规定。

  6. 数组的命名使用“类型[] 数组名”的形式

编码格式规范:

  1. package必须是类中可执行的第一行代码,且只能有一句,可以有多层,每一层用.隔开
  2. 在单一的语句后有用 ;结束,在一对括号{}后不使用 ;
  3. 如果定义类的时候没有使用package,那么java就认为我们所定义的类位于默认包里面(default package)。
  4. :import导入包时使用,在package之下,类主体之上
  5. 类和方法的内容都写在{ }内部
package com.***.***;		//类所在的包,必须在第一行
import java.util.*			//导入java内util内的所有文件,*是导入所有
class 类名{
    .......
}

1.8、API文档

API(Application Programming Interface,应用程序编程接口)是Java 提供的基本编程接口。可以帮助我们学习Java

中文版:API中文版,版本为JDK6的API。

image-20230118152140462

官方网址下载API

1.9、开发工具

  1. 文本编辑工具:NotePad++
  2. Java集成开发环境 IDE:eclipse、MyEclipse、IntelliJ IDEA 、

1.10、进制

1.10.1、简介

进制就是当一个数,满足该进制的最大数时,该数前位+1,本位清零。我们最熟悉的就是十进制:9进一位就是10,19进一位就是20。

常用的进制一般有4种:

  1. 二进制:计算机底层都是二进制,0和1,满二进一,前缀一般为0b。

  2. 十进制:我们正常使用的进制为十进制,0~9,满十进一,无前缀为默认进制

  3. 八进制:0-7,满八进一,以数字0为前缀。

  4. 十六进制:0-9和A-F,满十六进一,以0X或0x为前缀

    十进制二进制八进制十六进制
    00b0000x0
    10b1010x1
    20b10020x2
    30b11030x9
    40b100040x4
    50b101050x5
    60b110060x6
    70b111070x7
    80b10000100x8
    90b10010110x9
    100b10100120xA
    110b10110130xB
    120b11000140xC
    130b11010150xD
    140b111000160xE
    150b11110170xF
    160b100000200x10
    170b100010210x11

1.10.2、二进制

计算机底层都是二进制形式。而二进制有三种方式:原码、反码、补码。对于一个正数来说,三个码表示出来都是一样的结果。

  • 原码:直接将一个数转换成二进制,其最高位是符号位
  • 反码:对原码进行取反操作,只改变最高位
  • 补码:反码+1

比如1个byte的变量为1个字节,8个bit,在二进制的形式下13和-13的原码为:

13: 0 0 0 0 1 1 0 1

-13:1 0 0 0 1 1 0 1

正数的反码和原码相同,负数的反码就是在它原码的基础上,除符号位外,其他位置取反。

13反码: 0 0 0 0 1 1 0 1

-13反码:1 1 1 1 0 0 1 0

负数补码就是在反码的基础上加上一个1

13补码: 0 0 0 0 1 1 0 1

-13补码:1 1 1 1 0 0 1 1

在计算机底层二进制的存储中,所有的数值,无论正负,都是以补码的方式存储的。

1.10.3、进制转换

  • 十进制转换为其他进制:转换成几进制就对几进行求余

    • 转换成2进制:

      image-20230119150111587
    • 转换成8进制

    • 转换成16进制

  • 其他进制转换成10进制:

    image-20230119150811587
  • 转换成二进制

    • 8进制转换成二进制

    • 16进制转换成2进制

      image-20230119152547718
  • 二进制转换为8进制:需要将 3 个连续的数拼成一组,然后再独立转成八进制中的数字。

    image-20230119152931112
  • 二进制转换16进制:需要将 4 个连续的数拼成一组,然后再独立转换为十六进制中对应的数字

    image-20230119153157000

版权声明:本文为yuandfeng原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。