## 初识JAVA
一、计算机基础知识
1.计算机发明者
约翰·冯·诺依曼
世界上第一台计算机诞生于1946年的美国宾夕法尼亚大学。中文名做埃尼阿克,计算机的出现是因为计算弹道轨迹的军事需要。
2.计算机是由硬件和软件组成。
- 硬件:我们所看见的一些基础的物理设备。(运算器、控制器、存储器、输入设备、输出设备)
- 软件:可以实现一定的功能,使用硬件设备来进行制定的功能完成。
包括系统软件(PC端的Windows、Linux、mac等,手机端的IOS、Android)
和应用软件(日常生活中经常使用的,具有具体功能的软件)
3.计算机语言发展 - 机器语言:典型的二进制文件和计算机交流。
- 汇编语言:通过大量的助记符表示一些基本的操作指令完成计算机沟通。
- 高级语言:通过常用的英语指令编写程序,完成沟通。(Java就是一种高级计算机语言)
二、java语言的历史渊源与发展
1.创始人
java的创始人是詹姆斯*高斯林。
是由SUN(Stanford University Network)公司开发的一门高级编程语言,面向互联网Internet的编程语言。
2.名字起源
Java语言,java是印度尼西亚的一个岛名,因为盛产咖啡,所以也成为java语言的标志。
2.java体系结构
针对不同的开发市场,Sun公 司将Java划分为三个技术平台,分别是JavaSE、JavaEE和JavaME。
- JavaMe:Java的最小版本,android开发
- JavaSe:Java的标准版本,基础开发,是其他两个版本的基础
- JavaEE:Java的企业级版本,主要针对于web应用程序的开发,也就是常说的网页版
3.语言类型
java语言是一种面向对象的程序设计语言。
4.JDK版本 - JDK1.0
- JDK1.2 集合体系
- JDK5 大量新特性:增强for、泛型、并发操作包
- JDK7 教学主要使用版本,最稳定
- JDK8 Lambda表达式、函数式编程
- JDK9、JDK10、JDK11
三、java环境变量的配置
1.Java开发环境
简称JDK,它是整个Java的核心,其中包括Java编译器、Java运行工具、Java文档生成工具、Java打包工具等
- jdk:Java的开发工具包
- jre:Java的运行时环境
- jvm:虚拟机,在某个操作系统上,使用软件的方式,虚拟出来一个主机,主机中的任何操作就和原来的操作系统无关,用于给Java程序 运行的一个容器
2.jdk环境变量配置
新建一个系统变量,变量名称JAVA_HOME,配置为jdk的安装路径
在path变量中,使用%JAVA_HOME%/bin,来表示javac所在的路径
3.JDK、JRE、JVM的关系
四、开发工具与计算机间的交互
1.新建.java*文件*
在比想要新建的磁盘上新建文本文档,并修改文本文档名和后缀(例如:HelloWorld。java)
2.用合适的记事本打开.java文件
3.编写java程序并保存
4.打开命令行(3种方式)
(1)开始----所有程序----附件----命令提示符
(2)Windows + R,在弹出的运行窗口中,输入cmd(Command),回车
(3)在要操作的目录中,键盘shift + 鼠标右键,选择“在此处打开命令窗口”
5.Dos命令行中的常用命令:
【切换盘符】:直接写盘符加上冒号即可,例如,D:
【查看目录】:dir,例如,dir
【切换目录】:cd 要切换到的目录,例如,cd 文件夹名称(change directory) 返回上一级目录 cd…
6.编译Java程序命令
7.运行java程序命令
8.java文件的编译过程
.java文件先通过编译后形成字节码文件/二进制文件(.class文件),可以在java虚拟机上运行(JVM)
屏蔽了不同的操作系统,兼容性强(write once run anywhere)
五、java语言的特点
1.面向对象
封装 继承 多态 语法更加清晰 所需要资源更少 后期更加利于拓展
2.可移植性
在Java中,数据类型具有固定的大小,这消除了代码移植时令人头疼的主要问题
3.一次编写,到处运行(跨平台性)
通过java编写的应用程序在不同的操作系统下都可以执行 屏蔽了平台差异性
4.安全性
没有指针 提供了内存管理机制 垃圾回收机制 安全机制等
5.健壮的
Java的强制类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证
六、第一个java程序
1.HelloWorld程序
1 public class HelloWorld {
2
3 public static void main(String[] args) {
4 System.out.println("Hello World");
5 }
6 }
2.HelloWorld 注意事项
(1)找不到文件
一定是自己把文件名称写错了
隐藏了文件的后缀名(组织----文件夹和搜索选项----查看----去掉隐藏已知文件的扩展名)
(2)java、javac不是内部或者外部命令
当前目录下没有java、javac这个可执行程序
没有配置java、javac的环境变量
(3)单词拼接错误
没有区分大小写,例如class写成了Class、public写成了Public,System写成了system
main方法不能写成mian
(4)标点符号一定要是英文状态
建议:在中文状态下输入英文标点
(5)括号一定要成对出现
无论写大括号、中括号、小括号,都一次把成对的括号全都写完,再填充括号中的内容
3.一个java文件只能有一个public类,并且这个public类的类名一定要和文件名相同
4.一个java文件可以有很多类但只能有一个public类
5.一个类对应一个字节码文件
6.Java中有三类注释
//单行注释,/* 多行注释 /,/* 文档注释 */
七、java的基本数据类型及其包装类
1.整型
(1)byte(字节型)
byte数据类型是1字节,8位、有符号的,以二进制补码表示的整数;
最小值是-128(-2^7);
最大值是127(2^7-1);
默认值是0;
(2)short(短整型)
short数据类型是2字节、16位、有符号的以二进制补码表示的整数
最小值是-32768(-2^15);
最大值是32767(2^15 - 1);
默认值是0;
(3)int(整型)
int数据类型是4字节、32位、有符号的以二进制补码表示的整数;
最小值是-2,147,483,648(-2^31);
最大值是2,147,483,647(2^31 - 1);
默认值是0;
(4)long(长整型)
long数据类型是8字节、64位、有符号的以二进制补码表示的整数;
最小值是-9,223,372,036,854,775,808(-2^63);
最大值是9,223,372,036,854,775,807(2^63 -1);
默认值是0L;
后面加L或者l表示是long长整型;
2.浮点型:
(1)float
float数据类型是单精度、4字节、32位、符合IEEE 754标准的浮点数;
float在储存大型浮点数组的时候可节省内存空间;
默认值是0.0f;
后面加F或者f,表示float类型;
浮点数不能用来表示精确的值;
(2)double
double数据类型是双精度、8字节、64位、符合IEEE 754标准的浮点数;
浮点数的默认类型为double类型;
double类型同样不能表示精确的值;
后面加D或者d,表示double类型;
3.布尔型 boolean
boolean数据类型表示一位的信息;
只有两个取值:true和false;
这种类型只作为一种标志来记录true/false情况;
布尔类型不能和其他类型进行转换;
4.字符型 char
char类型是一个单一的16位Unicode字符;
最小值是’\u0000’(即为0);
最大值是’\uffff’(即为65,535);
char数据类型可以储存任何字符;
5.注意
String不是基本类型
6.包装类
基本数据类型 | 包装类 |
---|---|
byte | Byte |
boolean | Boolean |
short | Short |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
除了Integer和Character类之外,其它六个类的类名和基本数据类型一致,只需将类名的第一个字母大写即可。
7.包装类作用
能够方便的解决数据转换等问题
八、练习
public class TestDemo {
public static void main(String[] args) {
boolean flg = true;
boolean flg2 = false;
//没有所谓的0是假 非0是真
/*int i = (int)flg;
flg = (boolean) 10;*/
//不要尝试布尔类型和其他数据类型进行转换
}
public static void main1(String[] args) {
//整型
int a = 10;//4个字节
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
int b = Integer.MAX_VALUE;//最大值+1
System.out.println(b + 1);
int c = Integer.MIN_VALUE;//最小值-1
System.out.println(c - 1);
System.out.println("hello");
}
public static void main2(String[] args) {
int a = 10;//局部变量
//在Java当中 局部变量定义了之后一定要赋值
//System.out.println(a);
}
public static void main3(String[] args) {
long b = 10L;//8 可移植性
System.out.println(Long.MAX_VALUE);
System.out.println(Long.MIN_VALUE);
System.out.println(b);
}
public static void main4(String[] args) {
/* double d = 12.5;//8 CTR+SHIFT+/
System.out.println(d);
System.out.println(Double.MAX_VALUE);
System.out.println(Double.MIN_VALUE);
*/
//小数没有精确的 int a = 10;
double a = 1.1;
double b = 1.1;
System.out.println(a * b);
int c = 1;
int d = 2;
System.out.println(c / d);
}
public static void main5(String[] args) {
float f = 12.5f;//4
System.out.println(f);
}
public static void main6(String[] args){
String ch = "abc";
char ch2 = 'a';//2
System.out.println(ch2);
char ch3 = '高';
System.out.println(ch3);
char ch4 = 97;
System.out.println(ch4);
// char ch5 = -9; 不能表示负数
// System.out.println(ch5);
}
public static void main7(String[]args) {
byte b = 127;//1 -128 - 127
int d = 2147483647;
byte c = 10;
byte e = 20;
byte f = (byte) (c + e);// (byte) 强制类型转换
//整型提升
int i = 10;
i = c;
long l = 20;
long i2 = i + l;//整型提升
}
public static void main8(String[] args) {
short sh = 10;//2 15
System.out.println(sh);
}
}