目录
Java之父,詹姆斯 高斯林
现代计算机之父,图灵
1.Java是世界上"最好的语言"
这里的最好是最好用(生态最完整),在不同的领域,语言的优劣不同,在数据分析,爬取数据用python
与处理和操作操作系统底层相关的用C/C++,如果编写应用方面的WEB用java
JavaScript和Java毫无关系,JavaScript蹭热度!
HTML+CSS+JavaScript成为前端三剑客
HTML是网页的素颜,CSS给这个素颜化妆,Javacript使这个网页具有一定的行为
Java里面没有指针,只有引用(低配的指针)所以Java比较简单
Java的口号Write once,run anywhere. (一次编译,到处运行)说明可跨平台性。
怎么理解java的口号?:因为java有虚拟机,只要你要运行的地方有虚拟机JVM的话,你把java文件发给它,他就能运行
JDK java开发者工具
JRE:JAVA运行环境
IDEA java的集成开发工具
JVM 是java虚拟机。实际上是一个软件(JDK中有JVM)是用C/C++写的,用软件类似实现了一个硬件的东西。
.class程序跑到JVM上,把对应的字节码拉取过去然后执行
2.用记事本编译java的第一个程序Helloword
java的括号防在这一行后面,不像C语言一样在下一行
public 访问限制修饰符
class 类 ,类后面跟类名
java中 main方法只有一种写法,就是 public static void main(String[ ] args)
Java有三种打印
记事本编译:1.创建记事本,输入代码。
2.用控制台找到这个记事本的文件位置
f: 到f盘 然后再cd 记事本位置
javac 记事本名.java
执行完之后会生成一个class文件,这个class文件就是机器能够识别的机器码(二进制),java文件是我们人能够看懂的代码。
以记事本打开这个.class文件会出现二进制的乱码,生成class文件后 java 文件名(不加后缀)来执行这段机器码
类似于C语言的预编译 编译 汇编 链接 形成.exe文件,.exe文件。
JAVA中打开.class文件会出现cafe baby这个cafe baby是什么意思呢?
答:cafe baby 是一个四字节的常量 用来表识改文件时.class文件,如果不是java虚拟机不加载该文件并且抛出异常。
3.java程序书写注意问题
每次写完代码必须ctrl+s保存,保存后要重新编译
java的public类名和文件名要相同。
不是文件生成一个字节码,是一个类对应一个字节码
因为再java中用到哪个类,加载哪个类,而不是一股脑都加载 。
一般情况下一个java文件只写一个类
没给args赋值前数组为空
args[ ] 是个命令行数组(传几个字符串开辟几个数组元素),里面的参数是字符串,如果不传任何参数,那么就是个空数组
String[] args:这是一个字符串数组参数,它允许通过命令行向Java应用程序传递参数。args参数包含从命令行传递的所有参数,它是一个字符串数组,可以通过args[0]、args[1]等方式来获取命令行参数的值。如果没有传递任何参数,则args数组将是一个空数组。
JAVA在编译的时候是默认是GBK模式(GBK编译中文会乱码,即使仅仅注释中的中文也会乱码),而在书写的时候是 utf-8模式,所以在编译的时候要指定编译编码的方式。
java中三种打印方式,一种是sout换行,还有不换行。还有最后一种以C语言的形式的打印
这种基本不用
还有JAVA要求方法一定写在类里面
4. 数组的创建
int []arr1=new int[]{1,2,3,4}; int []arr2={1,2,3,4,5};
本质上是相同的,只不过第二个省略了new
但是第一个int [ ]arr1=new int[200];表示开辟200个整形int,并且初始化为0
5.冯诺依曼体系
现在计算机之父:冯诺依曼
计算机由输入设备(键盘,麦克风)和输出设备(屏幕,音频)还有内存储器()+外存储器还有CPU(运算器和控制器和寄存器)构成,其中CPU中存放了程序和数据,方便在内存运行的时候更加高效。
内存上存储程序和数据,然后运行的时候搬到内存中去运行
运算器是做加减乘除的,控制器是控制if switch 等逻辑的
6.Java类型认识
6.1.
int
java中的int 无论在什么机器和操作系统中(16位 32位 64位中)都是4个字节,依次类推,java的类型字节一定固定,不因外界硬件而改变。C语言在一些机器架构和编译器实现中,int类型的大小可能为2个字节(16位)或8个字节(64位)。
类型大小的确定+JVM是Java的可移植性的重要体现。
6.1.2
java中的int没有所谓的无符号,统一都是有符号的 -2^31~2^31-1
如何打印最大值 ? Integer.MAX_VALUE 记住java中整形的函数一般用Integer表示 (int的plus版本),Integer术语叫做包装类
6.1.3
命名规则:小驼峰numMax 不能以数字开头,可以有$ _
上述代码可以运行原因是java由unicode字符集,包括拉丁文,中文。
6.1.4
变量定义不初始化可不可以?
总的来说,虽然在Java和C语言中变量不是一定要初始化的,但是在使用变量之前必须要为其赋一个值,否则会编译错误。因此,建议在定义变量时尽可能进行初始化,以避免出现未知的结果。
不可以,变量,这是Java安全性的体现,一定要在使用变量之前给它赋值。
long
long八个字节,大小是-2^63~2^63-1
最大值是 Long.MAX_VALUE;
long a=10L; 最好这样写,因为10默认是int ,后面写个L,认为是long
还有 float 编译器默认带小数的是double所以定义float后面要加个F/f
Java 中无long long类型
double
double八个字节,注意一些运算。int a= 1/2; a是0 分子分母至少加一个小数才算的是double
精度丢失:在程序里面小数是没有精确的数字的,float只能精确到8位 double能精确到16位
float
这个代码不对,因为Java是强类型语言,只要类型不匹配就报错。
12.5后面要加F/f,因为默认小数是double,而double又不能隐式转化位float。隐式转换要求高到低不能低到高 。
char
Java中的char两个字节
汉字两个字节,可以打印说明char两个字节
java中的字符是有符号字符。-2^7~2^7-1
java中字符可以赋值给中文的
API(Application Programming Interface)应用程序接口
byte
字节类型,一个字节,-128~127。
当变量存放的值确定没有超过一定的范围的时候使用byte会省空间
代码通过不了,因为超过byte的范围了,需要把130强转位byte才能过
在Java当中任何数据类型都是有取值范围的,超过这个范围就会报错,C语言中会溢出不会报错
可以看出C语言即使越过了char的范围也会运行
java中没有sizeof之类的方法
short
两个字节 -2^15~2^15-1