1.java基础知识点HelloWorld,编译型解释型优缺点,平台独立性

本文仅是学习中的笔记,所以知识点的记载具有很强烈的私人性,也许会让读者们感觉到知识点不够串联。
上传到CSDN上作为备份存储,以供自己日后记载工具出现突发情况或者忘记某些知识点回来查找。
文中参考的知识点来源在文章末尾已标明,该文章不会作为商用,仅供自己和读者参考!
欢迎大佬们额外补充知识点和指出文章中的错误之处!
感谢您的阅读!

JDK - Java Development Kit Java开发套件
编写的是 .java文件的文本文件
Javac把 .java文件变成.class(类)文件
使用java命令来执行 .class文件

JDK包含JRE
JRE - Java Runtime environment
记事本文件推荐:notepad++

class Hello {
    public static void main(String[] args){
        System.out.println("Hello World!");
    }
}

我们编写软件相可以比喻为创造一个世界
世界由好多种类组成,每一个种类就是class
Class代表类,比如人类,动物类,植物类
Hello代表类的名字,所以Class Hello可以称为Hello类,即为组成这个世界中的一个种类
方法(main):Class Hello{ }中,大括号中写方法,方法代表这个类可以做的事,比如人类可以做饭,穿衣服,那么我们可以命令Hello类也做这些事。
main(String[] args){ }:小括号里放参数,大括号里放方法。比如,方法中我要做一个加法运算x+y,那么小括号里就放这x和y具体的数字,比如5和6。String就代表5和6的类型,是字符串类型。
Public static void是main的修饰符,public是公开的意思,表示这个方法是公开的,可以被随意调用。
方法中我们做一个最简单的打印(println),打印“Hello World!”
固定System.out.println(“Hello World!”);

Package(包):相当于电脑里的文件夹,里面用于存放方法

类的名字可以和文件名不同,两者没有直接关系,编译出来的class文件的名字是类的名字;
如果class前加public,则类名和文件名必须一样;
一个文件里可以有多个类,但是只能有一个类是public。有public的是父类,没有public的是子类

编译型语言:一个翻译将你写完的中文信翻译成英文信
解释型语言:你说一句话,他就翻译一句
编译型语言慢,解释型语言快

编译型软件:C/C++
特点:源码中有一处错误就不允许编译
优点:
① 直接运行最终产物,速度快,效率高,相同程序比解释型语言快30%-70%
② 消耗的内存比解释型程序更少
缺点:
① 编译器比解释器难写
② 平台依赖:编译型程序面向特定平台
③ 可执行的编译型代码比相同的解释型代码大许多
④ 编译型程序不支持代码中实现安全性,例如一个编译型程序可以访问内存中的任何区域,并且可对你的电脑做任何它想做的事(大部分病毒由编译型语言编写)
⑤ 编译器在调试程序时提供不了多少帮助
⑥ 由于松散的安全性和平台依赖性,编译型语言不太适合开发因特网或者基于Web的应用

解释型语言:Python,JavaScript,VBScript
特点:编写源代码时,一行一行的解释执行,而不是一次编译全部代码
优点:
1.源代码有错也可以解释执行,遇到错误再停止执行
2.解释型语言提供了极佳的调试支持。几分钟就可以定位并修复一个“空指针异常”,因为Java运行环境不仅指明了异常的性质,而且给出了异常发生位置具体的行号和函数调用顺序(著名的堆栈跟踪信息)。这样的便利是编译型语言所无法提供的
3.比编译器更容易实现
4.最大优势之一:平台独立性
5.可以保证高度的安全性
6.中间语言代码的大小比编译型可执行代码小很多
7.适合互联网和Web应用:因为平台独立性和严密的安全性
缺点:
1.不断地对源代码进行解释、执行、解释、执行
2.占用更多的内存和CPU资源:为了运行解释型语言编写的程序,相关的解释器必须先运行。解释器复杂,智能,会大量消耗资源的程序并且占用很多CPU周期和内存
3.由于解释型应用的decode-fetch-execute(解码-抓取-执行)的周期,它们比编译型程序慢很多
4.解释器会做很多代码优化,运行时安全性检查,这些额外的步骤占用了更多的资源并进一步降低了应用的运行速度
5.由于解释型程序将翻译(解释)过程放到执行过程中,所以解释型程序比编译型慢,并且每次运行程序都要对源代码进行重新解释,而不是直接运行最终产品

平台独立性(以java为例):本质上是通过虚拟机技术,通过限制一些功能,达到屏蔽底层细节的目的。
Java的平台独立性体现在两方面:体系结构无关、可移植
体系结构无关:JVM里设计了一套字节码指令系统,这套指令系统跟特定的体系结构无关。字节码不仅可以在各个机器上运行,还可以迅速的翻译成本地机器的代码。解释字节码运行肯定比先编译后运行慢得多,因此虚拟机提供了即时编译子系统,用于将使用最频繁的字节码翻译成本地指令,这个策略十分有效。

可移植:与C和C++不同,Java规范中没有“依赖具体实现”的地方,基本数据类型的大小以及有关的算法都做了明确的定义。例如:在Java中int永远为32位整数,而在C/C++中,int可能是16位整数、32位整数,也可能是编译器提供商指定的其他大小。
作为系统组成部分的类库,定义了可移植的接口。例如:一个抽象的Window类给出了在UNIX、Windows和Mac OS环境不同的实现;文件路径分隔符——File.separator,针对不同的文件系统也有不同的实现。
Java既是编译型又是解释型:
Java编写源代码,编译,没有连接这一步骤。由JVM执行class字节码文件,执行过程时解释型

Java的跨平台性(一次编写,到处运行):将自己的语言编译成一个中间语言,到其他平台时通过JVM转换成该平台的语言
Java既是一个编译型语言又是一个解释型语言
Java字节码文件先被加载到计算机内存中,然后读出一条指令,翻译一条指令,执行一条指令,这个过程被称为java语言的解释执行。

Java编译出.class字节码文件,然后可以拷贝到Windows,Linux,mac上由JVM运行。JVM是针对不同的操作系统编写的,所以java不能直接在二进制层面上跨操作系统平台

平台独立性方面的笔记作者:java高级编程中心 链接:https://www.jianshu.com/p/0639eeb6d9ef 来源:简书
其他部分笔记借鉴了b站麦叔编程、搜索公众号老卢私塾的视频,CSDN中查询到的资料

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值