初识java
我们在学习完C语言后 再去学习java会发现 java里面一些语法跟C语言是相同的/类似的
但我们还要学习这些不同之处(牢记)
C语言和java的区别其实也很明显
C语言是一门面向过程的编程语言
Java是一门面向对象的编程语言
什么是面向对象?
在Java的世界里,一切皆对象。比如:人、狗、手机、电脑等都是对象。所谓面向对象,就是依靠对象之间的交互来完成事情,比如:人用手机网上购物,狗吃骨头...
Java的面向对象特性与C++旗鼓相当,与C++的主要不同点在于多重继承。在Java中,取而代之的是更简单的接口概念。而且与C++相比,Java提供了更丰富的运行时自省功能。
Java语法是C++语法的一个“纯净版本”,相当于对C++做了一个减法。这里没有头文件、指针运算(甚至指针语法)、结构、联合、操作符重载、虚基类等等。不仅如此,Java开发环境远远超出大多数其他编程语言的开发环境。
另外一个需要学习的是一句话“Wrice once,Run anywhere”。
这是因为java体系结构中立
编译器生成一个体系结构中立的目标文件格式,按照该中规范生成的文件,只要有Java运行时系统,这些编译后的代码就可以在许多处理器上运行。Java编译器通过生成与特定计算机体系结构无关的字节码指令来实现这一特性。精心设计的字节码不仅可以很容易的在任何机器上解释执行,而且还可以动态地翻译成本地机器代码
了解了这些 我们开始学习java语法
这里我们先不管第一行
直接从第二行开始 其实这段代码就是一行main+一个输出语句
我们刚看到这串代码会觉得这个main方法语句怎么这么长 其实java里很多语句都可以简写
我们只要写main+回车就能写出main方法 同样的 只要sout+回车就能写出输出语句
这样说之后 是不是发现简单点了呢
通过上述代码,我们可以看到一个完整的Java程序的结构,Java程序的结构由如下三个部分组成:
1.源文件(扩展名为*.java):源文件带有类的定义。类用来表示程序的一个组件,小程序或许只会有一个类。类的内容必须包含在花括号里面。
2.类:类中带有一个或多个方法。方法必须在类的内部声明。如:这里的类Test(class是用来声明类的)
3.方法:在方法的花括号中编写方法应该执行的语句。如:这里的main方法
总结一下:类存在于源文件里面;方法存在于类中;语句存在于方法中。
注意:在一个源文件中只能有一个public修饰的类,而且源文件名字必须与public修饰的类名字相同。
运行java程序
Java是一门半编译型、半解释型语言。先通过javac编译程序把源文件进行编译,编译后生成的.class文件是由字节码组成的与平台无关、面向JVM的文件。最后启动java虚拟机来运行.class文件,此时JVM会将字节码转换成平台能够理解的形式来运行
1.使用记事本或者IDEA(集成开发环境)编写Java源程序
Java代码虚拟机(Java Virtual Machine,简称JVM)是Java程序的运行环境,它负责将Java字节码(bytecode)转换成特定平台上的机器码并执行。这使得Java具有“一次编写,到处运行”的特性,因为只要平台上有JVM,Java程序就可以在该平台上运行。
JVM的主要功能包括:
加载代码:JVM负责加载Java类的字节码到其内部的类加载器中,并进行相应的安全检查。
校验代码:在字节码被加载后,JVM会对其进行校验,以确保其符合Java语言规范,并且不包含任何可能破坏系统完整性的代码。
解释/编译代码:JVM可以直接解释字节码执行,也可以将字节码即时编译(JIT)成机器码以提高执行效率。
提供运行时支持:JVM提供了一些核心的运行时支持,如内存管理(包括堆内存的分配和垃圾回收)、线程管理、安全性支持等。
JVM的主要组成部分包括:
类加载器(ClassLoader):负责加载Java类的字节码到JVM中。
运行时数据区(Runtime Data Area):包括堆(Heap)、栈(Stack)、方法区(Method Area)等,用于存储Java程序运行时的数据。
执行引擎(Execution Engine):负责解释/编译字节码,并驱动JVM的指令集架构(ISA)来执行指令。
本地方法接口(Native Method Interface):允许Java代码调用本地代码(如C/C++代码)。
总的来说,JVM是Java程序得以跨平台运行的关键,它屏蔽了底层操作系统和硬件平台的差异,使得Java程序可以在不同的平台上运行而无需进行修改
JDK、JRE、JVM之间的关系?
JDK、JRE和JVM是Java技术栈中的三个核心概念,它们在Java应用程序的开发、运行和跨平台性方面起着关键作用。以下是它们的详细解释:
JDK (Java Development Kit): JDK是Java开发工具包,用于开发Java应用程序。
它包含了Java编译器(javac)、Java虚拟机(JVM)、开发工具(如调试器和监视器)、类库、示例代码和其他一些开发工具。
JDK提供了开发Java应用程序所需的所有工具和库。通过JDK,开发人员可以编写、编译和调试Java代码,并将其转换为可在JRE上运行的字节码。
JRE (Java Runtime Environment): JRE是Java运行时环境,用于运行已编译的Java应用程序。
它包含了Java虚拟机(JVM)、类加载器、运行时类库和其他支持文件。
JRE是Java应用程序的运行环境,当用户想要执行Java程序时,需要安装JRE。JRE负责将Java字节码转换为机器码并执行。
JVM (Java Virtual Machine): JVM是Java虚拟机,是Java实现跨平台的最核心的部分。
它只认识以.class为后缀的文件,并能将class文件中的字节码指令进行识别并调用操作系统向上的API完成动作。
JVM在操作系统的上一层搭建了一层虚拟机器,使得我们编写的Java代码能够跨平台运行,即可以在Windows、Linux等操作系统上进行运行。
这三者之间的关系可以表示为:JDK > JRE > JVM,也就是JDK包含了JRE,JRE又包含了JVM。简单来说,JDK是开发Java应用程序的完整工具包,JRE是运行Java应用程序所需的环境,而JVM则是实现Java跨平台性的关键组件
编写和运行第一个Java程序时,可能会遇到的一些错误:
1. 源文件名后缀不是.java
2. 类名与文件名不一致
3. main方法名字写错:mian
4. 类没有使用public修饰
5. 方法中语句没有以分号结尾
6. 中文格式的分号
7. JDK环境没有配置好,操作系统不能识别javac或者java命令
注释
基本规则
Java中的注释主要分为以下三种
单行注释:// 注释内容(用的最多)
多行注释:/* 注释内容*/(不推荐)
文档注释: /** 文档注释 */(常见于方法和类之上描述方法和类的作用),可以被javadoc工具解析,生
成一套以网页文件形式体现的程序说明文档
注意:
1. 多行注释不能嵌套使用
2. 不论是单行还是多行注释,都不参与编译,即编译之后生成的.class文件中不包含注释信息
标识符
在上述程序中,Test称为类名,main称为方法名,也可以将其称为标识符,即:在程序中由用户给类名、方法名或者变量所取的名字。
【硬性规则】
标识符中可以包含:字母、数字以及 下划线和 $ 符号等等。
注意:标识符不能以数字开头,也不能是关键字,且严格区分大小写。
【软性建议】
类名:每个单词的首字母大写(大驼峰)
方法名:首字母小写,后面每个单词的首字母大写(小驼峰)
变量名:与方法名规则相同
一个大型的工程,是由多名工程师协同开发的,如果每个人都按照自己的方式随意取名,比如:person、
PERSON、Person、_person,将会使程序非常混乱。如果大家在取名时能够遵守一定的约束(即规范),那多人写的代码便仿佛一个人写的。
关键字
通过观察上述程序可以发现,public、class以及static等颜色会发生变化,将这些具有特殊含义的标识符称为关键字。即:关键字是由Java语言提前定义好的,有特殊含义的标识符,或者保留字。
注意:用户不能使用关键字定义标识符。
在Java中关键字有很多,这里给大家列出来一部分,先了解下后序在逐一详细解释