目录
1、概述
1.1、软件
计算机分为软件和硬件,硬件不需要过多叙说,而软件就是运行在硬件之上,按一系列特定顺序组织的计算机数据和指令的集合。它分为系统软件(windows、mac、linux)和应用软件(在系统上运行的应用)。
我们在开发过程中与计算机的交互方式一般分为两种:
-
图形化界面GUI:交互较为简单,现在我们使用手机、电脑的页面都是图形界面
-
命令行方式CLI::交互需要一些特定的指令,比如DOS窗口、Linux等
windows常用的DOS指令:(使用dos删除时需要特别注意,从dos删除文件或文件夹是不走回收站的) 打开命令窗口:win+R键,输出cmd可以打开DOS窗口 切换盘符: 进入不同的盘(c:、d:),不区分大小写 进入指定的目录: cd 目录\目录 列出当前目录内的文件夹和文件:dir 返回上一级目录:cd.. 返回到根目录:cd\ 创建新的文件夹:md 文件夹名字\文件夹名字.... 删除文件夹:rd 文件夹名字\文件夹名字... (文件夹必须是空的才能删除) 删除文件:del 文件名.后缀 批量删除: del *.后缀 (会把该目录下所有该后缀的文件全部删除) 清空屏幕:cls 退出DOS命令行:exit
开发软件需要学习相应的计算机语言,计算机语言就是人与计算机交互的方式,就类似于我们的汉语、英语一样。它的种类很多:汇编语言、C、C++、Java、PHP、Python等等。
-
第一代语言:机器语言
- 直接由计算机硬件执行。
- 通常由二进制代码组成。
- 对于人类来说,编写和理解都非常困难。
-
第二代语言:汇编语言,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。目前汇编语言主要应用在计算机底层设计,比如单片机等。
- 使用助记符来代替二进制代码,如 MOV、ADD等。
- 需要汇编器将其转换为机器语言。
- 与特定的计算机架构紧密相关。
-
第三代语言:高级语言,就是目前主要学习的语言。
- 更接近人类语言,如 C、Java、Python 等。
- 需要编译器或解释器将其转换为机器语言。
- 可以在不同的计算机架构上运行,具有较好的可移植性。
-
第四代语言:领域特定语言,是为了解决特定问题领域而设计的高级编程语言。
- 通常用于数据库查询、报告生成等,如 SQL、MATLAB 等。
- 不需要详细描述如何完成任务,只需要描述想要的结果。
-
第五代语言:约束编程和逻辑编程语言
- 基于解决问题的约束而不是算法。它们通常用于人工智能和逻辑编程,允许程序员以逻辑形式表达知识。
- 目标是进一步简化编程,使计算机能够通过逻辑推理来解决问题。
- Prolog(用于逻辑编程)、Lisp(早期用于人工智能应用)等。
1.2、Java发展历程
-
第一阶段:从Oak到Java
-
启动Green项目:1991年,Sun Microsystems公司的James Gosling领导的Green Team启动了一个名为“Green Project”的项目,目的是为智能家电设计一个轻量级操作系统。项目团队遇到了C++的局限性(包括复杂性、缺少垃圾回收机制、分布式等等问题),因此团队决定开发一种新的编程语言,最初被命名为“Oak”。
-
项目的失败:1992年,“Green计划” 完成了操作系统、程序设计语言、类库等等的设计,到11月Green计划转化成 “FirstPerson有限公司”,为Sun全资的子公司。FirstPerson致力于创建高度互动的设备。他们针对华纳公司发布的关于电视机机顶盒的征求提议书提出一个机顶盒平台的提议,但是因为平台给予用户过多的控制权,导致投标败给了 SGI,同时与3DO的交易也失败了。因此从1991年开始的Green计划近乎夭折,项目组成员也大多被调到其他项目。
-
-
第二阶段:Java正式诞生
-
向互联网转型:随着互联网的崛起,1994年,Gosling和他的团队意识到,他们开发的语言可以用于互联网。于是Gosling团队对Oak进行了改造,并于当年完成了第一Java语言的网站:WebRunner。但是因为Oak已经被别人注册,于是Oak便正式更名为Java。
几个月后,Java成为了互联网上最热门的存在,下载使用Java的语言的人就多大10万以上,并且由Java语言编写的各种动画、小游戏如雨后春笋般纷纷出现。
-
1.0正式版本发布:Sun在1996年正式发布了JDK1.0版本,标志着Java作为一种新的编程语言正式面世。此版本包含了JRE(核心API、用户界面API、集成API、JVM、发布技术)和JDK(编译Java程序的编译器)。
-
JDK1.1版本:紧接着97年Sun公司就发布了JDK1.1版本,增加了JIT(即使编译器),它将常用的指令保存在内存中,下次再调用时不需要从新编译,从而让JDK效率有所提升。
-
-
第三阶段:确定发展方向,在96年年底,Flash横空出世,它不需要任何编程知识,就可以做出各种动画,随后Flash增加ActionScript 脚本,于是Java在网页上的应用逐渐被蚕食。于是Java更加迫切的需要找到自己的定位。
-
1998年12月,JDK1.2发布,同时伴随着JSP、Servlet、EJB等规范的发布,Java也将自己分为三个版本:
- J2SE:Java的核心和基础,是Java最基础的部分。可以进行桌面应用的开发
- J2EE:企业级开发,web,服务器开发,以JavaSE为基础,是Java能流行的根本所在。
- J2ME:用与移动设备和信息家电等移动平台的嵌入式开发
而JDK1.2也成为Java历史上最里程碑的一个版本。此时期Java明确了方向,并后来的发展打下了基础。
-
-
第四阶段:Java的发展时期
-
Java的相关框架产生:2002年2月,Java在Compaq、Fujitsu、IBM等众多公司的参与下,发布了JDK1.4版本,此版本已经使Java可以实现大多数应用,在此期间,大量基于Java的框架产生:Struts、WebWork、Hibernate、Spring等等,大量的企业应用服务器也相应产生:JBoss、WebLogic、WebSphere等等。
-
JDK1.5版本:2004年10月,JDK1.5发布,Sun公司将JDK1.5更名为JavaSE5.0,同时三个版本也改名为JavaSE、JavaEE和JavaME。1.5版本增加了泛型、增强的for语句、可变数量形参、注释、自动拆装箱等功能。
-
Sun公司被Oracle收购:2006年12月Sun公司发布Java SE6,到此时Sun一直维持这约2年一个版本的速度。但是在2009年4月20日,Oracle公司宣布收购Sun公司,至此影响了一个时代的Sun公司正式结束。
-
Java在双端领域发展:此后Android手机系统发布,它使用Dalvik虚拟机运行,其作用类似于JVM,但是没有遵守JVM规范,Android使用Java开发应用,给了Java在服务端、客户端双领域发展的机会。
2011年7月,Oracle用了近五年时间,终于发布了Java SE 7,在此版本中引入了二进制整数、支持字符串的switch语法、菱形语法、多异常捕捉、try语句自动关闭资源等特性。
-
-
第五阶段:Java生态环境走向成熟
-
JDK8正式发布:2014年3月,Oracle公司发布了Java SE8,此版本作为Java的第一个长期支持版本,也属于一个里程碑式的版本。Java 8为Java语言、编译器、类库、开发工具与JVM带来了大量新特性。如:Lambda表达式、函数式接口、流式编程、新的时间和日期API等等大量特性。
-
2017年9月,Oracle公司发布了Java SE 9,此版本带来了更高效、更智能的G1垃圾回收器,并在类库上进行大量更新,进一步简化编程,但是相应的语法变化并不多。
此后Oracle宣布Java的版本该为6个月一次,同时并约定每三年左右发布一个长期支持的LTS版本,而其余版本只提供半年的技术支持,于是2018年3月发布Java SE 10,2018年9月发布Java SE 11。其中Java11是继Java8后的第一个长期支持版本,且技术支持一直提供支持到2023年9月,补丁和安全警告等持续到2026年。
目前Java保持着6月一次的发布,并于2021年9月,发布了最新的LTS版本:Java 17,它加入了Java12-17的所有特性,这同样是一个里程碑式的版本,因为Spring6.0、SpringBoot3.0以后,对Java的最低要求即为17,所以这一版本会给Java开发带来很大的变化,未来也会慢慢过渡到Java17上来。
2023年9月,发布长期支持版本Java21,加入了纤程(虚拟线程)概念,提供更高的并发性和更低的资源消耗。
-
1.3、Java语言
Java是一门面向对象的程序设计语言,在语法上Java与C和C++类似,但丢弃了其相对难理解的一些特性,如操作符重载、多继承、自动的强制类型转换,同时Java语言不使用指针,而是引用,并提供了自动分配和回收内存空间,使得程序员不必为内存管理而担忧。
Java中最主要的是 Java 虚拟机(Java Virtual Machine,JVM)和 Java 应用编程接口(Application Programming Interface,API),它已经嵌入了几乎所有的操作系统,所以Java拥有一次编写到处运行的特点。
Java有三个版本:
1. Java SE(Java Platform Enterprise Edition):平台标准版,最早名为 J2SE,内部包含了支持 Java Web 服务开发的类,是学习Java的基础。
2. Java EE(Java Platform Enterprise Edition):Java 平台企业版,最早名为J2EE。它提供 Web 服务、组件模型、管理和通信API,可以用来实现企业级的面向服务体系结构(Service Oriented Architecture,SOA)和 Web 2.0 应用程序。
3. Java ME(Java Platform Micro Edition):Java 平台微型版,最早名为J2ME。在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。
特性(Java白皮书特性):
1、简单性
2、面向对象:Java 是一种面向对象的语言,它对对象中的类、对象、继承、封装、多态、接口、包等均有很好的支持。
3、分布式:操作分布(不同主机上布置相关操作)和数据分布(数据存放在多个不同主机上)
4、健壮性:让用Java编写的程序具有多方面的可靠性。
5、安全性:适用于网络/分布式环境
6、体系结构中立:JVM运行的并非源代码,而是编译后的字节码文件
7、可移植性:跨平台运行,一次编写到处运行,java的核心优势
8、解释性:Java的解释器可以在任何机器上直接执行Java字节码。
9、高性能:解释性字节码,且字节码可以在运行时动态转换成相应的机器码。
10、多线程:支持多线程,并提供多线程之间的同步机制。
11、动态性:有丰富的类库,可以自由添加新方法和实力变量,而对客户端没有任何影响
基础知识图解:
1.4、Java运行
1.4.1、运行机制
Java语言不但具有解释性语言的特点,还具有编译型语言的特点,它在执行过程中是先编译、后解释。
1、编译型:由专门的编译器将某种语言的源代码一次性翻译成可被计算器识别的机器码。这种方式执行效率高。编译后的程序可以脱离开发环境,在特定平台上执行,但它不具有移植性。
2、解释性:每执行一次就要翻译一次,效率比较低。这种方式不能脱离开发环境独立运行,但是在跨平台上具有优势,只需要提供相应平台的解释器即可。
运行机制:(编译+解释)java是先把源程序编译成字节码文件(.class),然后以解释的方式执行字节码。
运行过程:
Java源文件(.java文件)→经过jdk的编译器(javac)→编译成字节码文件(.class)→字节码文件加载到虚拟机(JVM)→虚拟机解释执行.class文件→解释器解释成计算机语言→计算机读取
半解释半编译的特点:
半编译:
- Java 语言的源代码不是直接编译成机器代码,而是编译成平台无关的字节码。
- 字节码可以在任何安装了兼容 JVM 的设备上运行,实现了“一次编译,到处运行”的理念。
半解释:
- 在运行阶段,字节码可以被 JVM 解释执行,也就是说,JVM 会在运行时逐条解释并执行字节码。
- JVM 也可以通过 JIT 技术将字节码即时编译成本地机器代码,提高执行效率。
优缺点:
优点:
- 平台无关性: 字节码可以在任何平台的 JVM 上运行,具有很强的可移植性。
- 安全性: 字节码运行在 JVM 的沙箱环境中,增强了安全性。
- 优化运行: 通过 JIT 技术,可以在运行时进行性能优化。
缺点:
- 性能损失: 与直接编译成机器代码的语言相比,Java 的运行时解释或即时编译会带来一定的性能损失。
- 依赖 JVM: 运行 Java 程序需要依赖 JVM,不同的 JVM 实现可能会导致程序的行为有微小的差异。
综上所述,Java 通过这种半编译半解释的方式,在保持跨平台能力的同时,也尽可能地优化了运行性能。这种设计理念使得 Java 成为了一种适用于各种场景的通用编程语言。
字节:是计算机中存储数据的最小计量单位(表示大小的),单位是byte或B,取值范围是-128—127(2^8)
二进制:是计算机中最小的存储单元,单位是bit。8个二进制就是一个字节。
我们在计算机上看到的东西都是通过CPU转化二进制数据得来的。
计量单位:8bit = 1B
1024B = 1KB
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB …………
1.4.2、运行环境
***环境:(开发运行需要下载JDK 甲骨文公司)***JDK是Java标准版开发包,是Oracle提供的用于Java的开发包,它提供Java编译器,Java运行时环境,Java类库等。其中Java运行时环境即JRE。
1、JDK(Java Development Kit):开发者工具包,是开发java程序的关键(包含JRE)
- bin包:提供 JDK 工具程序(javac编译工具、java运行工具、jdb调试工具.....)
- include包:和JVM交互的头文件
- lib包:类库
- jre包:java运行环境(java9之后的jdk版本是没有单独的jre目录的,它是运行时环境,包含太多东西会降低运行效率,jdk9可以使用模块化技术,可以根据创建的项目生成一个最小的运行时环境)
- conf包:配置
2、JRE(Java Runtime Environment):java运行时环境,包含了JVM和核心的一些类库。
3、JVM(Java Virtual Machine):java虚拟机,属于虚拟的计算机,是java跨平台的核心部分。JVM直接运行在操作系统之上,不和硬件直接交互。JVM需要调用相关的类库后,才能执行相关的.class文件
- 字节码指令集
- 寄存器
- 栈:虚拟机栈、本地方法栈
- 堆
- 存储方法域
- 垃圾回收。
JDK包含了JRE,JRE包含了JVM。
Java可以跨平台的原因:
Java中解释执行字节码的是Java虚拟机(JVM),JVM就相当于一个独立的虚拟计算机,它架构在操作平台上,一面和Java源程序对接,一面和不同的计算机操作平台对接,而它的作用就是运行Java源程序编译后的字节码文件(.class),并根据不同的平台翻译成不同的机器码。所以Java才可以在不同的平台上运行。
可以说不同平台的JVM不同的本质是其中的解释器不同,因为解释器需要根据不同的平台,解释出不同的机器码。一个程序开始运行,虚拟机就开始实例化,多个程序就会存在多个虚拟机,虚拟机之间不能共享数据
,程序关闭虚拟机实例消亡。
1.5、JDK安装
开发Java程序前,需要先在计算机上配置Java开发环境,即安装和配置JDK。
1.5.1、安装
- 登录JDK网站:JDK 。下载相应版本的的JDK (主要为8、11、17、21这些长期支持的版本)
-
安装:点击exe安装程序安装即可(安装的路径不含中文)(带着版本号,方便后续更换版本)默认在 c:\programFiles\java 路径内
-
配置环境变量:计算机→右键选择属性→高级系统设置→环境变量(在JDK15后,即便不配置环境变量也可以使用javac、java、javaw、jshell等命令)
-
JAVA_HOME配置:更改不同的版本,这里配置的是哪个版本,使用的就是那个版本
-
在path中配置变量:%JAVA_HOME%\bin 和 %JAVA_HOME%\jre\bin(Java8需要配置这个)
-
-
在cmd中输入命令测试是否安装成功(两种都能用):
java -version javac --version
1.5.2、卸载
- 删除JDK的安装目录
- 在环境变量中删除配置的JAVA_HOME,删除path下关于java的目录
- cmd中使用命令:java -version 检验
1.6、Java程序
1.6.1、程序编译运行
安装好JDK后可以编写一个程序测试一下,可以直接使用文本编辑器简单测试一下(可以下载Notepad++):新建一个文件,按Java的格式编辑好后,保存为.java后缀的文件。
在文件内写入下面内容:
public class HelloJava{
/**
* 这是一个main方法,用来运行,是程序的入口
*/
public static void main(String[] args){
//打印语句,可以打印()内的内容
System.out.println("Hello Java");
}
}
进入cmd,跳到文件所在的文件夹,先编译,编译后会产生一个.class的文件,然后再运行这个 .class的文件,进行输出:
编译命令为:javac .java文件名。将.java的文件编译成.class的字节码文件,注意生成的字节码文件的名字和类名是一样的。(编译出现错可能是文件名、路径输入错误,也可能是程序代码存在语法问题)
运行class字节码的命令为:java 类名
常见问题:
1、遇到“提示Bad cimmand or file name” 或 “javac:command not found”可以检查安装是否错,可执行路径是否错误
2、如果提示无法找到文件,则检查执行目录里是否存在这个文件,或者文件的大小写是否错误。(编译文件需要指定文件扩展名,运行程序不能带扩展名)
3、运行程序时遇到 java.lang.NoClassDefFoundError错误。则检查相关类型
4、如果名称键入正确,提示没有找到类,则检查系统环境变量是否正确
5、Java是区分大小写的,所以需要避免大小写拼写错误
6、cmd使用GBK编码,所以在有汉字的情况下可能会出现乱码。
如果出现乱码可以将修改环境变量改为.UTF-8<img src="https://img-
1.6.2、class类
Java是一种面向对象的语言,其程序是以一个个类(class)的形式存在的,类是Java中最小的程序单元,在Java中方法、属性等语句必须在类中定义。
public class 类名 这个格式就表示这是一个类,我们的Java代码就是在一个个的类中进行编写的,其中class是一个关键字,表示为一个类,而public是一个访问修饰符,表示类是公开的,一个 .java 文件中可以写多个类,但是只能有一个类由public修饰符修饰,且此类的名字要和文件名相同。
而且类中的执行语句后面要以 ;结束。
还有代码中的大括号{} ,它是用来划分程序不同部分的,通常称为块。在Java中任何方法的代码都必须在{}中。
public class HelloJava{
public static void main(String[] args){
String str =""; //执行语句以 ;结束
}
}
//一个文件中可以有多个类,但public修饰的只能有一个
class Person{
}
class Student{
}
一个.java文件中编写多个类时,该文件被编译后会产生多个.class文件。
1.6.3、main方法
main是一个方法,它是一个程序的主入口,可以运行,会被JVM识别并自动加载。格式是固定的:
public static void main(String[] args) {
//这个 . 是用来调用的,System.out对象调用了println方法。
//("Hello Java") 是传递给println方法的一个字符串参数。
System.out.println("Hello Java");
}
其中 public static void main(String[] 变量名) 这个格式是固定的,一个类最多只能有一个main函数(可以没有),程序的入口是main函数。(mian函数不是成员函数,无法被其他方法/类所调用)。
当一个main方法被执行时,Java 虚拟机启动,JVM会从类路径中优先加载main方法所在的类,在将类初始化完毕后,就会开始执行main方法。
- 类加载:当JVM启动一个类时,它首先会加载该类,即找到对应的
.class
文件并将其读取到内存中。 - 类初始化:在类加载之后,JVM会初始化该类
- 初始化静态变量。
- 执行静态代码块。
- 执行main方法:类初始化完成后,JVM开始执行main方法。
1.6.4、注释
1、普通注释
注释在JAVA运行过程中是不执行的,javac命令在编译时会直接忽略注释的内容。注释仅仅对代码起到标注和解释的作用,在注释中写上相关代码的说明,可以方便其他程序员阅读代码。
注释通常用来说明某段代码的作用、类的用途、方法的功能、方法的参数、方法的返回值等等,使用注释可以提高程序员对代码的阅读性
。
注释是非常重要的,尤其是工作中,项目代码量很大,且一个项目由多个程序员共同完成,如果不添加注释,阅读起来是非常困难的。甚至自己写的代码如果不添加注释,过段时间自己都看不明白了。所以在团队协作过程中代码的可读性是第一考虑要素。
对于一个规范的程序源代码而言,注释应该占源代码的1/3 以上。所有的类、方法、属性都要用注释表明用途等。
1、单行注释:在程序中注释一行代码 (idea快捷键 Ctrl+/) 。通常用于简短的、对代码行的简要说明。
// 后面是注释内容,单行注释,只在这一行生效
2、多行注释:可以同时注释多行代码(idea快捷键 Ctrl+Shift+/)通常用于在代码块之前提供更详细的信息,或者解释一段复杂代码的工作原理。
/*
里面是
多行注释
代码
*/
注释除了方便阅读外,它也能帮助我们调试程序,当某段代码出现问题时,如果代码很长,可以使用先将其中部分代码注释起来,然后运行其余部分,慢慢查看问题出现在哪里。这样可以缩小范围,偏于排查。
2、文档注释
除了上面两种注释外,Java还有一个特有的注释方式,叫文档注释。该注释可以被Java提供的工具 javadoc解析,从而生一个以网页形式提现的API说明文档(和Java的API文档类似)。
注释可以包含一些预定义的标签(例如 @param
、@return
、@throws
等),这些标签可以用来生成格式化的HTML文档。同时文档注释还能配合HTML相关的标签进行使用。在JDK源码中有大量的文档注释,所以学会文档注释可以帮助我们更好的看懂源码。
3、文档注释:是Java特有的一种注释方式。通常用在类、属性、方法上,用来说明类、方法等的用途。当其他人使用该类或方法时,不需要知道类的具体实现,只需要调用程序接口进行编程(调用API编程)。(idea快捷键 /** + Ent ):
@author (对类的说明)开发作者
@version(对类的说明)开发版本
@since 指明需要最早使用的JDK版本
@param (对方法的说明)方法中的参数说明
@return (对方法的说明)返回值
@deprecated (对方法和类的说明)不推荐使用的方法
@description 方法的说明
@see 全路径包名 #方法名(参数类型列表) (对方法和类的说明)可以在注释中实现链接跳转.@see可以指向包,类,方法,属性.
@exception 抛出异常的类型
@throws (对方法的说明)方法抛出的异常
对于文档注释,可以使用javadoc命令生成相应的API文档,具体有两种方式
-
使用CMD命令行:javadoc -encoding UTF-8 -charset UTF-8 *.java
-
使用IDEA工具
运行完成后就会生成相应的文件,打开其中的index.html查看即可
1.6.5、输入输出语句
在之前测试中 System.out.println(“Hello Java”); 运行后打印出了 Hello Java , System.out.println就是一个输出语句,可以将()的内容进行输出,相应的也有输入语句 ,它就是 java.util.Scanner,。
//输入 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
在 Java 中,格式化输出通常是通过
System.out.printf
方法或者String.format
方法实现的。这些方法使用格式化字符串,其中包含了一系列的格式说明符,每个格式说明符都以%
开头,后跟特定的字符来指示应该如何格式化相应的参数。以下是一些常用的转换字符及其对应的数据类型:
整数类型:
- %d: 十进制整数
- %o: 八进制整数
- %x 或 %X: 十六进制整数(%x 产生小写字母,%X 产生大写字母)
浮点数类型:
- %f: 十进制浮点数
- %e 或 %E: 科学记数法表示的浮点数(%e 产生小写字母 e,%E 产生大写字母 E)
- %g 或 %G: 根据精度和值的大小自动选择 %f 或 %e(%g 使用小写字母,%G 使用大写字母)
- %a 或 %A: 十六进制浮点数(%a 产生小写字母,%A 产生大写字母)
字符和字符串类型:
- %c: 单个字符
- %s: 字符串
- %S: 字符串(转换为大写)
布尔类型和 null:
- %b: 布尔值(true 或 false)
- %B: 布尔值(TRUE 或 FALSE)
日期/时间类型 (自 Java 1.5 起):
- %t: 日期/时间转换符的前缀,后面需要跟一个特定的字符来指定日期/时间的格式,例如 %tY 表示年份,%tm 表示月份。
百分比:
- %%: 字面值 %(不对应任何参数)
换行和其他:
- %n: 平台独立的换行符
哈希码:
- %h: 散列码(十六进制)
每个格式说明符都可以包含修饰符,这些修饰符可以指定最小宽度、精度、对齐方式等。例如,%6.2f 表示输出一个浮点数,至少占 6 个字符宽,且小数点后有两位数字。
使用格式化输出时,需要确保提供给格式说明符的数据类型与说明符本身相匹配,否则会抛出
java.util.IllegalFormatConversionException
异常。
1.6.6、转义字符
上面的输出语句中,有一个\n 的符号, 它是一种转义字符,表示换行,还有其他的转移符号:
1、\' 代表一个单引号 '
2、\" 代表一个双引号 "
3、\\ 代表一个反斜杠\
4、\t 调到下一个tab位置
5、\r 回车
6、\n 换行
7、\b 退格
8、\f 换页
9、\a 响铃
10、\0 空字符
在不同操作系统中的换行:
Unix系统:“\n”
Windows系统:“\r\n”
Mac系统:“\r”
1.6.7、分割符
在Hello Java测试中,有很多的符号如:分号; 、括号() 、大括号{} 、空格、点. 、方括号[],这些符号每个具有特殊的意义。
-
分号; :在Java中每行代码通常使用 ;来结尾,在Java中一行可以存在多条语句,而每条语句就是通过分号来确定的。同样一条语句也可以在多行书写(变量名名不能跨行,值是字符串,而字符串可以拼接,所以可以跨行书写)。
String name = "张三"; //以;结束 int age = 20; String gender = "男"; //同样行可以有多个语句,每个语句用;结束 String message = "hello!" + "我是张三"; //一个语句在两行书写,等同于:String message = "hello!我是张三";
-
括号() :定义方法时必须使用()来包含形参的声明,在调用方法时也需要使用()来传入实参,在表示式()内的内容优先参与计算。
-
大括号{}:大扩号括起来的内容是一个代码块,可以有多行代码,这些代码在逻辑上是一个整体的。比如之前写的main方法,它的内部代码都是在一个{}中,main内部的代码是一个整体,它们属于这个main方法。
-
方括号[]:主要用来定义数组,在定义时[]内规定数组的元素个数,在使用时[]内保存数组索引。
-
空格:一条语句的不同部分通常用空格区分。它包含(空格、tab、回车)三种。
-
点.:通常在类调用它内部方法、属性时使用。
这些分割符在整个代码编程中都是经常使用的。
1.7、简单的规范
-
包的名字由小写字母组成。
包就是文件夹,用来存放Java类等文件
1、个人项目 个体项目(individual:指个人发起,但非自己独自完成的项目,可公开或私有项目,copyright主要属于发起者。 包名为“indi.发起者名.项目名.模块名……” 单人项目(one-man):指个人发起,但非自己独自完成的项目,可公开或私有项目,copyright主要属于发起者。 包名为“onem.发起者名.项目名.模块名……” 个人项目(personal),指个人发起,独自完成,可分享的项目,copyright主要属于个人。 包名为“pers.个人名.项目名.模块名.……” 私有项目(private):指个人发起,独自完成,非公开的私人使用的项目,copyright属于个人。 包名为“priv.个人名.项目名.模块名.……” 2、团体的项目命名 team:团队项目,指由团队发起,并由该团队开发的项目,copyright属于该团队所有。 包名为“team.团队名.项目名.模块名.……” com :公司项目,copyright由项目发起的公司所有。 包名为“com.公司名.项目名.模块名.……”
-
类名每个单词大写字母开头,后续小写字母。驼峰式命名
-
对象名称第一个单词全小写,后面的单词由大写字母开头。
-
常量的名称都大写,并且指出完整含义。
-
参数的名称无其他具体规定。
-
数组的命名使用“类型[] 数组名”的形式
编码格式规范:
- package必须是类中可执行的第一行代码,且只能有一句,可以有多层,每一层用.隔开
- 在单一的语句后用 ;结束,在一对括号{}后不使用 ;
- 如果定义类的时候没有使用package,那么java就认为我们所定义的类位于默认包里面(default package)。
- :import导入包时使用,在package之下,类主体之上
- 类和方法的内容都写在{ }内部
package com.***.***; //类所在的包,必须在第一行
import java.util.* //导入java内util内的所有文件,*是导入所有
class 类名{
.......
}
1.8、API文档
API(Application Programming Interface,应用程序编程接口)是Java 提供给开发者的参考资料,它详细描述了软件应用或库的各个方面。API文档通常包括如何安装、配置、使用软件的信息,以及软件的类、方法、函数、返回类型和参数的详细描述。它的主要目的是帮助开发者理解如何使用特定的软件库或框架来构建应用程序。
API文档可以帮助我们学习Java。
中文版:API中文版,版本为JDK6的API。
附Java 11和Java 17 的中文文档
- Java 11 :https://www.runoob.com/manual/jdk11api/index.html
- Java 17:https://doc.qzxdp.cn/jdk/17/zh/api/index.html
1.9、开发工具
在Java学习的初期,少使用IDE工具,多使用文本编辑工具,这样做的目的是为了加深理解,因为最初学习的时候,我们通过文本编辑工具去敲一些代码,可以加快我们学习的速度,如果一开始就使用IDE,可能会养成一定依赖性,当Java本身熟悉后,再使用IDE工具也会更加得心应手。
- 文本编辑工具:NotePad++
- Java集成开发环境 IDE:eclipse、MyEclipse、IntelliJ IDEA 、