什么是Java
Java概念
Java是一种可以撰写跨平台应用程序的、面向对象的程序设计语言。简单说,Java就是一种语言,不过是一种针对jvm的语言,Java编译后是字节码,而jvm会把这些字节码解释成机器码,然后做出相应的动作。
java主要分三块,j2se:java的基础核心语言。j2me:java的微型模块,专门针对内存小,没有持续电源等小型设备。j2ee:java的企业模块,专门针对企业数据库服务器的连接维护。 手机用到的是用j2me所编出来的小程序。
Java虚拟机
Java虚拟机(JVM)是Java Virtual Machine的缩写,是指建立在硬件和操作系统之上,运用硬件或软件手段实现的虚拟的计算机。Java虚拟机有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。可以运行Java字节码的虚拟计算机系统 ,它有一个解释器组件,可以实现Java字节码和计算机操作系统之间的通信。
Java的垃圾回收机制
gc即垃圾收集机制是指jvm用于释放那些不再使用的对象所占用的内存。在C/C++中,程序员需要自己管理内存,Java提供了一个系统级的线程来跟踪内存分配,不再使用的内存区将会自动回收不同的JVM的实现中,垃圾收集机制大不相同若需要使一个对象被回收,必须移除其上的所有引用,通常可将其置NULL但是,即使有了垃圾收集机制,仍然可能出现内存溢出的情况。
Java的运行环境搭建
JAVA_HOME
C:\Java\jdk1.7.0_55
PATH
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
CLASSPATH
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
javac:Java编译器
java:Java解释器
jdb:Java调试器
javap:反编译
javadoc:文档生成器
利用编辑器编写Java源程序,源文件名:主类名.java
利用编译器将源程序编译成字节码,字节码文件名:源文件名.class
利用虚拟机(解释器)运行,工作过程:载入、代码校验、解释执行
必须熟练掌握的命令
javac命令:编译器将java源文件编译成字节码文件
java命令:JVM解释执行已经编译好的字节码文件
java的优点
1.平台无关性
平台无关性是指Java能运行于不同的平台。Java引进虚拟机 原理,并运行于虚拟机,实现不同平台的Java接口之间。使用Java编写的程序能在世界范围内共享。虚拟机是个用来解释Java指令的软件包,可以让Java在任何机器上运行,比如有运行在Mac或 UNIX下的虚拟机软件包。虚拟机并不是Java语言本身,它是个为特定机器编写的解释器软件。Java的虚拟机策略就相当于世界语,这是个人造的国际语言,目的是使得不同语言之间的翻译和沟通更加容易。
Java源代码和字节码与机器无关,JVM与机器相关,装在不同操作系统的机器上,需要专门为该操作系统开发的JVM,Java的数据类型与机器无关,Java虚拟机(Java Virtual Machine)是建立在硬件和操作系统之上,实现Java二进制代码的解释执行功能,提供于不同平台的接口的。Java适宜于互联网的开发应用,其中一个原因是它使用了虚拟机。
2.安全性
Java的编程类似C++,学习过C++的读者将很快掌握Java的精髓。Java舍弃了C++的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针侵入系统。Java对程序提供了安全管理器,防止程序的非法访问。
3.面向对象
Java吸取了C++面向对象的概念,将数据封装于类中,利用类的优点,实现了程序的简洁性和便于维护性。类的封装性、继承性等有关对象的特性,使程序代码只需一次编译,然后通过上述特性反复利用。程序员只需把主要精力用在类和接口的设计和应用上。Java提供了众多的一般对象的类,通过继承即可使用父类的方法。在Java中,类的继承关系是单一的非多重的,一个子类只有一个父类,子类的父类又有一个父类。Java提供的Object类及其子类的继承关系如同一棵倒立的树形,根类为Object类,Object类功能强大,经常会使用到它及其它派生的子类。
4.分布式
Java建立在扩展TCP/IP网络平台上。库函数提供了用HTTP和FTP协议传送和接受信息的方法。这使得程序员使用网络上的文件和使用本机文件一样容易。
5.健壮性
Java致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。Java自己操纵内存减少了内存出错的可能性。Java还实现了真数组,避免了覆盖数据的可能,这些功能特征大大提高了开发Java应用程序的周期。并且Java还提供了Null指针检测、数组边界检测、异常出口、Byte code校验等功能。
6.解释型
我们知道C,C++等语言,都是针对CPU芯片进行编译,生成机器代码,该代码的运行就和特定的CPU有关。Java不像C或C++,它不针对CPU芯片进行编译,而是把程序编译成称为自字节码的一种“中间代码”。字节码是很接近机器码的文件,可以在提供了java虚拟机(JVM)的任何系统上被解释执行。
7.动态
java程序的基本组成单元就是类,有些类是自己编写的,有些是从类库中引入的,而类又是运行时动态装载的,这就使得Java可以在分部环境中动态的维护程序及分类,而不像C++那样,没档期类库升级以后,如果想让程序具有新类库提供的功能,就需要修改程序,重新编译。
java的用途
1.网络应用程序开发,例如:网上银行(中国银行,建设银行,工商银行的网上银行都是用J2EE开发出来的,你看看他网银的网页的后缀名JSP就知道),网页游戏等。2.企业管理软件,现在很流行的B/S(浏览器/服务器)架构管理程序很多就是用J2EE开发的。3.手机游戏,你看到那些手机游戏安装文件的后缀名.jar了吗?就是这JAVA开发出来的标志。开发这些东西一般用JAVA ME(J2ME)4.嵌入式开发,例如给电视机顶盒,小型家电写程序。java se(j2se)是一个基础,如果你想靠JAVA吃饭那么J2EE和J2ME要选一个来学深入学习。如果想做网络程序就学J2EE,想学手机编程,嵌入式类的就去学J2ME.不过一般J2EE的工作机会比较多。
程序的不安全性
最严重的:内存泄漏,程序崩溃
一般严重的:发生一些逻辑错误,且不便于调试
较轻的:丢失部分数据,就像强制转换一样
https://www.bilibili.com/video/BV1qL411u7eE?from=search&seid=16833944447396760504&spm_id_from=333.337.0.0
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
· AI与.NET技术实操系列:使用Catalyst进行自然语言处理
· 分享一个我遇到过的“量子力学”级别的BUG。
· Linux系列:如何调试 malloc 的底层源码
· 对象命名为何需要避免'-er'和'-or'后缀
· JDK 24 发布,新特性解读!
· C# 中比较实用的关键字,基础高频面试题!
· .NET 10 Preview 2 增强了 Blazor 和.NET MAUI
· SQL Server如何跟踪自动统计信息更新?