JAVA基础学习笔记-day01
博文主要是自己学习JAVA基础中的笔记,供自己以后复习使用,参考的主要教程是B站的
尚硅谷宋红康2023大数据教程
1.java基础学习路线
2.计算机常识
2.1 硬件+软件
2.2 软件:特定顺序组织的计算机
数据和
指令`的集合,分为系统软件和应用软件
2.3 常用的DOS命令:
3. 计算机语言
3.1 计算机语言发展史:
机器语言—>汇编语言—>高级语言(面向过程的语言,面向对象的语言)
JAVA之父:詹姆斯·高斯林(James Gosling)
3.2 Java技术体系平台
Java SE(Java Standard Edition)标准版:桌面级应用
Java EE(Java Enterprise Edition)企业版:在服务器端的Web应用开发
Java ME(Java Micro Edition)小型版:移动终端
4.JAVA开发环境搭建
JDK (Java Development Kit):JRE + 开发工具集(例如Javac编译工具等)
是Java程序开发工具包,包含JRE 和开发人员使用的工具
**JRE ** (Java Runtime Environment) :JVM + Java SE标准类库
是Java程序的运行时环境,包含JVM和运行时所需要的核心类库。
5. Hello World
/*
1.如果这个类不是public,那么源文件名可以和类名不一致。
如果这个类是public,那么要求源文件名必须与类名一致。否则编译报错。
2.一个源文件中可以有多个类,编译后会生成多个.class字节码文件。
但是一个源文件只能有一个public的类。
*/
class HelloWorld{
// Java程序的入口是main方法,其中String[] args可以变为 String args[],String[] a(后者换了个名字)
public static void main(String[] args){
System.out.pritln(“HelloWorld!!”);
}
}
Java程序开发的三个步骤:编写、编译、运行
问题:字符编码报错
解决:Notepad++
javac -encoding utf-8 Review01.java
6.注释
// 单行注释
/*
多行注释
*/
文档注释(Java特有)
/**
@author 指定java程序的作者
@version 指定源文件的版本
*/
文档注释内容可以被JDK提供的工具 javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档。
javadoc -d mydoc -author -version HelloWolrd.java
7.Java API文档
API (Application Programming Interface,应用程序编程接口)是 Java 提供的基本编程接口
下载API文档:
- 在线看:https://docs.oracle.com/en/java/javase/17/docs/api/index.html
- 离线下载:https://www.oracle.com/java/technologies/javase-jdk17-doc-downloads.html
Java优点:
1.跨平台性:Java语言编写的应用程序在不同的系统平台上都可以运行,依靠JVM
2.面向对象性:让程序更好达到高内聚,低耦合的标准
3.健壮性:吸收了C/C++语言的优点,但去掉了其影响程序健壮性的部分(如指针、内存的申请与释放等),提供了一个相对安全的内存管理和访问机制。
4.安全性高:
Java适合于网络/分布式环境,需要提供一个安全机制以防恶意代码的攻击。如:安全防范机制(ClassLoader类加载器),可以分配不同的命名空间以防替代本地的同名类、字节代码检查。
- 简单性
Java就是C++语法的简化版,我们也可以将Java称之为“C++--
”。比如:头文件,指针运算,结构,联合,操作符重载,虚基类等。
6.高性能:
Java最初发展阶段,总是被人诟病性能低;客观上,高级语言运行效率总是低于低级语言的,这个无法避免。Java语言本身发展中通过虚拟机的优化提升了几十倍运行效率。比如,通过JIT(JUST IN TIME)即时编译技术提高运行效率。Java低性能的短腿,已经被完全解决了。
Java缺点:
1.语法复杂
2.一般适用于大型网站开发,整个架构会比较重,对于初创公司开发和维护人员的成本比较高。
3.并非适用于所有领域。:
8.Java核心机制:JVM
JVM功能说明:
JVM(Java虚拟机):是一个虚拟的计算机,是Java程序的运行环境。JVM具有指令集并使用不同的存储区域,负责执行指令,管理数据、内存、寄存器。
8.1 实现Java程序的跨平台性
8.2 自动内存管理(内存分配、内存回收)
1.Java程序在运行过程中,涉及到运算的数据的分配、存储等都由JVM来完成
2.Java消除了程序员回收无用内存空间的职责。提供了一种系统级线程跟踪存储空间的分配情况,在内存空间达到相应阈值时,检查并释放可被释放的存储器空间。
3.GC的自动回收,提高了内存空间的利用效率,也提高了编程人员的效率,很大程度上减少了因为没有释放空间而导致的内存泄漏。
注意:Java程序还会出现内存溢出和内存泄漏问题吗? Yes!
内存溢出(Out Of Memory) :就是申请内存时,JVM没有足够的内存空间。通俗说法就是去蹲坑发现坑位满了。
内存泄露(Memory Leak) :就是申请了内存,但是没有释放,导致内存空间浪费。通俗说法就是有人占着茅坑不拉屎。
JVM内存结构:https://pdai.tech/md/java/jvm/java-jvm-struct.html