java基础第一讲–概述
1. 初识java
mkdir -- 创建目录
cls 清屏
盘符: 如 E: D: C:
dir指令,可以看某个目录下的子目录
cd:切换目录 cd ..回到上一级目录 cd . 在当前目录下
rd 删除一个目录 -- rd 目录名
del 删除一个文件 -- del 文件名
快捷键:
敲命令的时候自动补全 tab
打开命令行 win+R
用上下箭头翻阅历史指令记录
命令行窗口中的内容复制的问题:右键--->标记(k)-->左键选中要复制的区域--->enter(回车)即拿到了要复制的内容,然后可以将其粘贴到其他地方
e:\java基础>javac Hello.java
e:\java基础>java Hello
hello world!
jdk: java development kit java开发工具包--谁是开发者?---大家在学java所为何事?
学java为了以后做软件开发---jdk叫做开发者工具包---为开发者准备的。我们给文学院同学用java开发了一款软件,我们是开发者,文学院的同学是使用者,我们一定要用到jdk。
请问使用者需要这个玩意吗?不需要
jre:java runtime environment java运行时环境,这个东西是在运行程序时需要的,这时候对于使用者来说,jre是需要的吗?需要
为什么需要?
我们需要对java有一定的了解。怎么编译、运行的?这也包含了java与C的区别。
C语言:
C语言的编译与运行对环境有要求,对同一个程序在使用不同的编译器进行编译的时候有没有出现过不同的结果?
指针:
32bit机器下,char* p所占内存空间的大小?4Byte---指针存放的内存地址
64bit机器下,char* p所占内存空间的大小?8Byte
在32bit机器下编译好的C语言程序,放到64bit机器上运行是否可以?可以的
在64bit机器下编译好的C语言程序,放到32bit机器上运行是否可以?不可以
为什么?
1Byte = 8bit 1bit能存放高低电频,0 or 1;32位机器意味着内存寻址的大小范围为32个0 到 32个1,高低电频要靠电线来传输,可以想到一定有32根线传送高低电频。
00000000 00000000 00000000 00000000
11111111 11111111 11111111 11111111
从32个0到32个1 都是内存物理地址的编排顺序,要找到其中的地址,是不是需要有32根地址线来找。
32bit机器下的指针所占内存4Byte,
64bit机器下的指针所占内存8Byte,
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
请问,放在32bit机器上执行的时候,能不能把地址找全?
java语言:一处编译,处处运行
同一份代码,编译一次之后,可以在任意环境上执行。
因为,java运行在java虚拟机上。java虚拟机是什么呢?jvm
jvm:相当于一个操作系统,运行java的。不是编译java的。编译完成的java程序,只在jvm上跑,至于如何跟硬件以及宿主机操作系统进行交互,是jvm的事情,程序员一般情况下不用管。也不在乎在哪个操作系统上,因为编译好的java程序执行在jvm上。
懒病,不同的人有不同懒病,张三的懒病到了李四身上可能就不适用了。
新冠肺炎,在飞沫中存活,那它就不管是张三还是李四,谁吸入了这个带有新冠肺炎病毒的飞沫,谁就感染。所以,它的可移植性很强。
java中没有指针的概念,指针已经被封装好了。
程序员的注意力在程序上,业务逻辑上,不需要管理太多的复杂的对于硬件的操作。这让java变得简单易学易用。
但是,java和C比较起来,也有一些不足之处,比如,C/C++这些需要对复杂的内存进行操作和管理,内存的操作和管理由程序员自行进行。稍有不慎就会发生内存泄露等。但是如果管理得好呢,那么程序的效率就很高。这就是人们常说C/C++效率比java好的地方。对于好的程序员来说,健壮性java确实不如C/C++。
当然,当入门之后,要提升,就要去研究jvm。深入了解jvm。
什么是JVM?
jvm叫做java虚拟机,一看就不是一个固定的软件。那它是什么呢?jvm是一套标准。是由SUN公司制定的标准。人们可以依照这一套标准进行jvm具体的版本的开发。比如HotSpot,它是遵照jvm的标准,使用jdk开发工具进行开发出来的一个软件,用来运行编译好的java程序。
OpenJDK是开发者工具
HotSpot---->jvm的一个实现
java是开源的,所以jdk有源码,openjdk也有源码,你想了解jvm的具体实现,比如你要知道HotSpot是怎么写出来的,有哪些程序组成,你可以看OpenJDK源码。
很多同学装完jdk之后,应该有这样一个疑问,jvm到底在哪里?我是不是没有安装jvm?我的程序怎么跑起来的?
安装完jdk之后,一起装了。请问装jdk之后,还要装jre吗?
大家想想,谁用的东西是最全的?开发者还是使用者?开发者。
他们之间的关系如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DS62WOGD-1611118068562)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210120112639935.png)]](https://i-blog.csdnimg.cn/blog_migrate/aef3fecbd6c14ba956ae4a4543721af5.png#pic_center)
2 java基础
在editplus中,蓝色字体是关键字,黑色的是标识符,粉色的是字面量
什么是关键字、标识符、字面量
字面量:数据
标识符:变量名,函数名,类名,函数的参数名等这些由程序员自己定义的名字都叫做标识符。只能包含数字字母下划线$,不能以数字开头
关键字:是java保留的一些有特殊用途的,关键字是不能用来做标识符的
E:\java基础>del *.class 这个是用来删除当前文件夹下所有的以.class结尾的文件
注意事项:
1. 遇到了编译错误、运行时错误希望大家将这些错误记录下来,自己写一个错误集.当以后你记录多了,见识多了,调试代码的时候就会快很多。
public class Test01
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
1. java程序是怎么执行的?
我们知道,java源程序是以xxx.java命名的,源程序是程序员编写的,人能看懂的,请问我们写代码是要给谁看?计算机,计算机能看得懂我们上面写的代码吗?看不懂,计算机能看懂什么东西?计算机实际只能看懂0和1。为什么?因为计算机压根儿什么都看不懂,他只能接受高低电频,高为1,低为0,是不是这样?所以计算机只能读懂二进制。我们用符号写就的东西,它搞不懂。那么符号写就的是为了人能读懂,程序员能更方便简洁的去写代码。
写完代码之后,我们要将这些字符转换成二进制,机器能处理的二进制。
xxx.java通过编译器编译之后,生成xxxx.class文件,该文件中保存的就是二进制。
我们将这个xxx.class文件送入虚拟机JVM,jvm负责解释执行。
以后我们写完工程以后,都会打包,打成jar包或者war包,这些包都是包含了大量的.class文件。我们把这些class文件给到用户之后,用户是没有办法更改我们的源程序的。
2. 关于xxx.java文件中的class
一个class对应一个类,在编译以后,一个class会生成一个xxx.class文件
一个xxx.java文件中,可以有多个class类,有几个类,就会在编译之后生成几个对应的.class文件
一个xxx.java文件中,不可以存在重名的两个类,如果存在,编译报错(类重复)
一个xxx.java文件中,可以没有public关键字.
对于编译来说,编译只是对语法进行检查,只与是否有方法、属性这些东西,对于编译来说并不重要,只要语法对了,编译就通过。
如果一个xxx.java文件中,多个class之前存public关键字,就会报如下错误:
public关键字修饰的类,一定要存放在以该类名.java为文件名的文件中,否则报错
在一个xxx.java文件中,可以没有xxx这个类,只要其他的类不是由public修饰,在语法上是过得去的,编译是没有问题的,运行的时候,也没有问题
一个xxx.java文件只有一个类被public修饰,且该类名一定要是文件名
- E:\java基础\1-20-1>javadoc -d 存放目录 -author -version Test01.java
