JavaSE_day01 笔记
一、Java 是什么?
Java 是一种面向对象类型的编程语言。
1991 年,Oak(橡树)主要是做消费类型的电子嵌入式芯片。
1995 年,Java(爪哇,咖啡)最终做 Web 应用程序。
可以参考每月的 TIOBE 编程语言排行榜。
Java 主要是应在服务端开发中,游戏服务器,移动端服务器,商城服务器,视频服务器,银行服务器。
Java 还会作为底层封装的一个标准,通过 Java 来调用一些底层的操作。
二、Java 目前主要有三种版本
J2SE:Java 2 Platform Standard Edition,后来叫 JavaSE。主要是 Java 技术的核心和基础部分。
J2EE:Java 2 Platform Enterprise Edition,后来叫 JavaEE。目前 Eclipse 基金组织在 2018-7-31 又定了一个新的名字,Jakarta EE。主要代表企业应用开发中相关的解决方案。简单理解就是,如果我们需要开发一个完整的商业项目,单纯靠 Java 是完成不了的,需要整合其他的技术一起才行。比如,一个项目会用到 Spring、MyBatis、Hibernate、Struts2、Redis、Lucene、Solr、Elasticsearch、Zookeeper、Nginx、Maven、SVN、Git、Gradle...
J2ME:几乎已经淘汰了。目前主要流行使用 Android 技术来处理一些小型设备的应用。开发 Android 应用可以使用 Java 也可以使用 Kotlin。
三、Java 的特点
主要有如下几个特点:简洁、面向对象的、分布式的、编译型的、体系中立的、可移植的、健壮的
Java 的简洁是相对 C++ 语言来说的,Java 主要是舍弃了 C++ 中一些比较复杂的东西,比如指针、结构、单元、头文件、运算符重载等内容。
Java 是所有面向对象语言中,面得最“纯粹”的面向对象。
Java 的分布式能力,主要体现在它超强的联网能力,Java 开发 Socket 通信相关的程序非常简单,访问远程对象的方式跟本地文件系统那样轻松。
计算机中使用的高级语言编写程序的执行方式主要有两种:编译型和解释型。
编译型:专门的编译器,将我们写好的源代码,转成当前系统平台所在的硬件设备上能够读懂并执行的机器码。接着就可以让电脑识别和运行。常见的编译型语言:C、C++、Kotlin、Objective-C、Swift 等。
解释型:专门的解释器,将我们写好的代码逐行解析执行,不会理你这行数据有多长,只要是一行即可。可以即时解析成对应的机器码,立即执行。常见的解释型语言:JavaScript、Python、Ruby 等。
Java 呢,特殊一点点。它既是编译型,也是解释型语言。Java 需要将源码(.java)经过编译器进行编译,得到一个字节码文件(.class),它是一种与平台无关的、不可执行的文件。接着,需要找到解析器解析后,才能够得到一个指定系统(比如,当前是 win 系统)的可执行文件。
Java 的 JVM 主要是负责执行生成的字节码文件的一个工具。JVM 也就是常说的虚拟机。以后面试的时候,会常被问到。Java 的跨平台特性其实是依靠了 JVM 的强大功能。JVM 给所有平台中安装的工具都设计了一致接口,只需要编译器面向接口生成对应的代码即可让虚拟机进行解析执行。JVM 的作用,就是一个转换器。转换后,主要是一个字节码文件,这种文件带有一点体系结构中立的特性和可移植性,跟谁(任何平台)都没有关系。
Java 在运行前和运行时,都会进行一系列的检查,保证程序的健康可用状态。
Java 可以说是目前最安全的一种程序设计语言,可以另外学习一些web 安全,Shiro、Spring Security 安全框架。
Java 还有一个特别优秀的多线程特性,使得很多应用的性能得到极大的改善。在面试过程中,也是面试官特别喜欢进行提问的。面试的点主要在于考察应聘者对程序更抽象的理解能力。
Java 是一种动态的语言,可以很方便的查询运行的信息,还能给运行中的程序加入新的代码。
静态编译:一次编译,在编译的时候把你所有的模块都编译进去。
动态编译:按需编译,程序在运行的时候,用到哪个模块就加载哪个模块。
四、搭建 Java 的开发环境
JDK:Java SE Development kit,Java 的标准开发包。JDK 主要是包括了编译和运行需要用到的各种工具包,比如 Java 编译器、Java 运行时环境,还有一个常用的类库。
上面说到的运行时环境,其实就是 JRE。
1)先双击安装,指定安装路径(非中文路径,不要在 c 盘),取消公共 JRE 选项。
2)右键“我的电脑”→“属性”→“高级系统设置”→“环境变量”按钮→添加“JAVA_HOME”→ 编辑 Path 的值,在最前面加上 “%JAVA_HOME%\bin;”。
3)Win + R 快捷键,调出运行窗口,输入 cmd 打开 DOS 命令行工具。输入 java -version 进行验证是否安装 JDK 成功。
JDK 10
bin:主要存放一些执行命令,比如将要使用 javac 和 java 命令。
conf:存放相关的配置文件。
include:存放平台特定的头文件。
jmods:存放各种模块,JDK 9 版本后新增的内容。
legal:存放模块的授权文件。
lib:存放一些补充的 jar 包文件。
DOS 命令
cls:清屏。
: 冒号:盘符。
cd:进入指定的目录。
cd ..:回退上一级目录。
cd \:回到根目录中。
五、HelloWorld
类:所有的 Java 代码都需要写在一个类文件中,文件的后缀名 xxx.java。
main 函数:程序的入口。
工具:Eclipse、STS、Netbean、IDEA。
记事本
javac 的命令格式:javac -d 生成的路径 源码文件的路径
如果路径是当前目录的话,则可以直接使用实心点来表示。
javac -d . One.java
java 的命令格式:java 文件名
java One
directory 目录 f:\abc\bcd\ee\ww
六、Java 的注释
注释的作用,主要是用说明性的文字,对当前代码进行解释,让合作降低沟通成功。
注释的作用:多写注释,以防忘记。平时调错的时候,也可以用到。
写好的注释,系统是不会执行注释中的内容。
单行注释://
多行注释:/* */
文档注释:/** */ 通过 javadoc 命令可以生成对应的说明文档。
七、关键字
就是系统已经定义好的一些单词,有特殊的含义。直接使用可以实现某些功能,开发者不能自定义它的功能。
保留字没有任何含义,也没有任何作用。Java 有可能在某年某月某日会给它赋值一些功能,但到底是什么功能,它还没确定,只是当前占用不然其他人使用。
八、标识符
组成元素:英文 a-Z、数字 0-9、符号 _ 和 $
书写规则:
1)数字不能开头
2)不能使用关键字和保留字
3)严格区分大小写,不限制长度,但要求有意义、可读性强。
参考“驼峰命名法”,就是每个单词的首字母大写。
九、数据
软件开发其实就是跟数据打交道。
软件 = 数据 + 逻辑。
Java 中提供两种容器来存放数据:常量和变量。
常量:就是不会再改变的数据。
变量:就是会发生改变的数据。
十、变量
容器,其实就跟我们喝水的时候用的杯子一样。将我们需要的数据(水)装载容器(杯子)中。
我们应该将对应的数据装载在对应的容器中,不然就会引发类型匹配错误。好比,花生油的瓶子不要装醋,否则会串味。
12.21 小数:double、float 浮点类型
double 双精度浮点类型,范围最大。
float 使用时,需要加上一个 f 或者 F 作为后缀。2.54F、2.56f
12 整数:int 整型
十进制:日常生活中常见的数据类型。10、12、88、59...
二进制:以 0b 或者0B 开头。0b1100、0B0001
十六进制:以 0x 或者 0X 开头。数字 0-9 和 a-f 组成。0xa2
八进制:以 0 开头。0123、0257
true 布尔:boolean 布尔型
true 真
false 假
c 字符:char 字符型
指的是单字符,’a’、1、’中’
要特别注意,a-A 的话,有时候可以当做数字来用,在ASCII 码表中,字母有对应的数值。比如 a 是 97。
变量值可以被访问,还可以被覆盖,设置可以被赋 null 值。
数据是如何存储的?
不论是在内存还是硬盘,存储设备的最小信息单元叫“位 bit”,比特位,一般使用小写 b 字母表示。
计算机最小的存储单元叫“字节 byte”,一般使用大写 B 字母表示。字节是由连续的 8 个位组成的。
1 B = 8 bit
1 KB = 1024 B
1 MB = 1024 KB
1 GB = 1024 MB
1 TB = 1024 GB
1 PB = 1024 TB
整型
byte 字节 1 -128 ~ 127
short 短整型 2 -32768 ~ 32767
int 整型 4 -2147483648 ~ 2147483648
long 长整型 8 -2^63 ~ 2^63-1
浮点型
float 4 - 3.403E38 ~ 3.403E38
double 8 - 1.798E308 ~ 1.798E308
字符型
char 2
布尔型
boolean 1 / 0 1
语法格式:
数据类型 变量名 = 数值;
int i = 12; // 定义变量并且初始化赋值
注意:此处的 = 号,叫赋值符。写代码的顺序,从右到左。
因为我们需要将右边的值,赋值给左边的变量。
在使用变量的时候,需要注意以下几个问题:
1)定义变量的时候,需要注意变量名不能重复。
2)调用变量的时候,需要注意使用范围。
十一、数据类型的转换
如果是范围大的往范围小的方向去转,比如 double → int,需要强制指定转换的类型。
如果是范围小的往范围大的方式去转,比如 int → double,数据的类型会自动提升。
数据类型的大小排列:byte < short < int < long < float < double
十二、运算符
+、-、*、/ :加、减、乘、除。
- 号,可以用作加法运算,还可以用作“连接符”。
“Hello” + “World” ==> HelloWorld
在使用的时候,如果连接的对象一个是字符串,一个是数值类型,最后得到的结果还是字符串。”Hello” + 2 = “Hello2”
- 号,还可以作为负号使用。
% 取模,简单理解就是取余数。结果的符号与被取余数一致。
++ 自增:当运算的时候,会先对自己进行 +1 操作。
-- 自减:当运算的时候,会先对自己进行 -1 操作。
++/-- 后置:先使用变量原有的值进行计算,计算完成之后,才会执行自增/自减。
++/-- 前置:先将自身自增/自减后才进行运算,使用变量值是自增/自减后的值。
扩展后的赋值符号,= 赋值符号主要是将右边的值赋给左边。
*= :如果有 a = a * 2; 运算,则可简写为:a *= 2;
/= :如果有 a = a / 2; 运算,则可简写为:a /= 2;
+= :如果有 a = a + 2; 运算,则可简写为:a += 2;
-= :如果有 a = a - 2; 运算,则可简写为:a -= 2;
%= :如果有 a = a % 2; 运算,则可简写为:a %= 2;
常见的比较运算符
<、>、==、===、!=、>=、<=