## Java SE 基础知识体系梳理

----------day01-------------
(1)计算机的体系结构
(2)Java语言的概述
(3)开发环境的搭建和使用
1.计算机的体系结构(常识)
1.1 计算机的基本概念
计算机俗称“电脑”,是一种可以应用于高级计算等各个领域的设备。
计算机主要有两大部分组成:计算机硬件 + 计算机的软件。

1.2 常见的硬件
计算机中常见的硬件主要有:CPU、内存、硬盘、显卡、键盘、鼠标、显示器、…
CPU - 中央处理器,是计算机中最核心的部件,类似于人的大脑
- 主要用于解析和执行计算机的指令以及处理软件中的数据
内存 - 是计算机中的存储部件
- 主要用于临时存放CPU要访问的数据内容,CPU可以直接访问内存且效率高
- 容量比较小,一旦关机则会造成数据的丢失
- 时刻使用快捷键: ctrl+s 进行报错
硬盘 - 是计算机中的存储部件
- 容量比较大,一旦关机数据也不会丢失,也就是可以实现永久存储数据
- CPU不可以直接访问硬盘,若希望访问需要先加载到内存中
其中键盘叫做标准输入设备,其中显示器叫做标准输出设备
科普:
1Tb = 1024Gb
1Gb = 1024Mb
1Mb = 1024Kb
1Kb = 1024byte(字节) 通常一个英文字母占1个字节,一个汉字占2个字节
1byte = 8bit(二进制位) 计算机的底层识别0和1组成的二进制序列
思考:
目前主流的硬盘配置是:250G、320G、500G、1Tb、…为啥我的只有298G呢?
解析:
硬件厂商是采用1000作为进率,而操作系统是采用1024作为进率显示

1.3 常见的软件
计算中常见的软件主要有:系统软件 和 应用软件
其中系统软件主要指操作系统,目前主流的操作系统都有:
windows系列、Unix系列、linux系列、ios系列、Android系列
其中应用软件主要指安装在操作系统之上的软件,如:QQ、火狐浏览器、迅雷等

1.4 计算机的体系结构
使用者 => 应用软件 => 操作系统 => 硬件设备
=> 其中操作系统分为:外壳(Shell) 和 内核(Kernel)

2.Java语言的概述(常识)
2.1 Java语言的背景
Java语言诞生于1995年,该语言之父是詹姆斯-高斯林,该语言之前隶属于sun公司,现在隶属于oracle公司。
Java语言在编程语言排行榜占据重要的地位。

2.2 Java语言的主要版本
(1)Java SE(Java Platform, Standard Edition)

  • 称之为“Java平台标准版”,主要用于学习Java语言的语法规则和编程基础。
    (2)Java EE(Java Platform,Enterprise Edition)
  • 称之为“Java平台企业版”,主要用于学习Java语言的后台开发技术。
    (3)Java ME (Java Platform,Micro Edition)
  • 称之为Java 平台微型版,随着Android智能平台的普及已经走向了淘汰。

3.开发环境的搭建和使用(重点)
3.1 jdk的下载和安装
(1)下载方式
方式一:直接从官网上下载 www.sun.com www.oracle.com
方式二:直接搜索下载 www.baidu.com www.sogou.com

(2)安装方式
若下载的是安装版,则一路点击下一步采用默认方式安装即可;
若下载的是绿色版,则直接解压即可;
切记安装路径中不要有中文!!!

3.2 相关的概念(记住)
jdk - Java开发工具包,只要做Java开发就需要下载和安装该软件,包含jre。
jre - Java运行时环境,只要运行Java程序就需要下载和安装该软件。
javac.exe - Java语言编译器,负责将Java源代码翻译成字节码文件。
java.exe - Java语言解释器,负责将Java字节码文件进行边解释边执行。

3.3 编写Java程序的流程
(1)新建一个文本文档,将xxx.txt修改为xxx.java;
(2)使用记事本的方式打开该文件,编写Java代码后进行保存;
(3)启动dos窗口,切换到xxx.java文件所在的目录中;
(4)使用javac xxx.java进行编译生成xxx.class的字节码文件;
(5)使用java xxx进行解释执行打印结果;

注意:
当文件后缀无法显示时的处理方式:组织 => 文件夹和搜索选项 => 查看 => 隐藏已知文件类型的扩展名 => 去掉勾选 => 确定

3.4 常用的快捷键
ctrl+s 保存 ctrl+c 复制 ctrl+v 粘贴 ctrl+x 剪切
ctrl+a 全选 ctrl+f 查找 ctrl+z 撤销

windows+d 回到桌面 windows+e 打开计算机 windows+l 锁屏
windows+tab 切换任务
windows+r 打开运行,输入cmd后回车就可以打开dos窗口

alt+tab 切换任务
ctrl+shift 切换输入法,一旦切换到中文输入法后就使用shift进行中英文切换
ctrl+alt+delete 启动任务管理器

3.5 环境变量的配置
(1)基本概念
通常情况下可执行文件只能在当前安装目录中使用,若希望该文件可以在任意路径中使用,则需要将该可执行文件的路径存放环境变量Path中。

(2)配置方式
计算机 => 鼠标右击,选择属性 => 高级系统设置 => 高级 => 环境变量 => 系统变量 => 找到Path后点击编辑,将javac.exe文件所在的路径放到Path变量值的最前面,加上英文版的分号 => 一路点击确定即可
切记Path变量原有的变量不要删,配置完毕后记得重启dos窗口

3.6 跨平台原理(记住)
对于同一份字节码文件来说,由于不同的操作系统中都提供了Java虚拟机负责翻译成对应平台的机器指令,因为使得同一份字节码文件赢得“一次编译,到处使用”的美名

                     --------------day02---------------------

今天内容:
(1)变量和注释
(2)数据类型

1.变量和注释(重中之重)
1.1 基本概念
当需要在Java程序中记录单个数据内容时,则需要声明一个变量,而声明变量的本质就是在内存中申请一块独立的存储单元,由于该存储单元中的数据可以改变,因此得名为"变量"。
由于存放的数据内容大小不同导致所需存储单元的大小不同,在Java语言中使用数据类型的概念加以描述,为了便于下次查找需要给该存储单元指定一个名称,叫做变量名。

1.2 声明方式
数据类型 变量名 = 初始值; - 其中=初始值可以省略,但分号不可以省略
如:
int age = 18;

1.3 标识符(变量名)的命名规则(笔试题)
(1)必须由字母、数字、下划线以及美元$等组成,其中数字不能开头(下午讲到);
如:name、age、nianling、name2、name3等
(2)不能与Java语言的关键字同名,所谓关键字就是Java语言中用于代表特殊含义的单词
如:public、class、void、static等
(3)区分大小写,长度没有限制但不宜过长;
如:day 和 Day代表不同的标识符,不推荐使用
(4)尽量做到见名知意,支持中文但不推荐使用;
如:year、month、day、size、length等

1.4 常用的注释
// 单行注释,表示从//开始一直到本行结束的所有内容都是注释
/**/ 多行注释,表示/开始一直到/之间的所有内容都是注释

注意:
多行注释之间是不允许嵌套的

2.数据类型
2.1 基本分类
在Java语言中数据类型主要分为两大类:
(1)基本数据类型(记住)
byte、short、int、long、float、double、boolean、char
1 2 4 8 4 8 1 2
(2)引用数据类型(了解)
数组、类、接口、枚举、注解

2.2 常用的进制
在日常生活中采用十进制来进行数据的描述,逢十进一,权重:100、101、10^2 …
在计算机中采用二进制进行数据的描述,逢二进一,权重:20、21、2^2、…
由于十进制有正负数,为了使得计算机中能够存储,计算机中采用二进制的最高位(最左边)代表符号位,若是0则代表非负数,若是1则代表负数。

如:
10^3 10^2 10^1 10^0
千 百 十 个
1 2 3 4 => 读取:一千一百一十一

2.3 进制之间的转换(尽量理解)
(1)正十进制转换为二进制的方式
a.除二取余法,让十进制整数不断地出于2取出余数,直到商为0时将余数逆序排列
b.拆分法,将十进制整数拆分为若干个二进制权重的和,若有该权重下面写1否则写0
如:
45 = 32 + 8 + 4 + 1

     二进制的权重: 128  64  32  16   8  4  2  10   0   1   0    1  1  0  1   => 0010 1101

(2)正二进制转换为十进制的方式
a.加权法,让二进制的每个数字乘以当前位的权重再累加起来。
如:
0010 1101 =>02^7 +02^6 +12^5 + 02^4 + 12^3 + 12^2 + 02^1 + 12^0
=> 0 + 0 + 32 + 0 + 8 + 4 + 0 + 1
=> 45

(3)负十进制转换为二进制的方式
a.先将十进制的绝对值转换为二进制,进行按位取反再加1。
如:
-45 绝对值转换为二进制:0010 1101
进行按位取反: 1101 0010
再加1: 1101 0011

    -45 + 45 = 0;-45: 1101 0011 45: 0010 1101  +---------------------------1 0000 0000 (高位溢出,也就是将1丢弃) => 0000 0000 => 0

扩展:
有余力的同学课下查询原码、反码以及补码的概念。

(4)负二进制转换为十进制的方式
a.先减1再按位取反,转换为十进制后添加负号。
如:
1101 0011 => 先减1: 1101 0010
=> 按位取反:0010 1101
=> 转十进制:45
=> 添加负号:-45

练习:
将整数58 和 -58 转换为二进制:
将整数83 和 -83 转换为二进制:
将正二进制0101 1101 和 0011 1110 转为十进制:
将负二进制1010 1010 和 1101 1101 转为十进制:
解析:
128 64 32 16 8 4 2 1
0 0 1 1 1 0 1 0
0 1 0 1 0 0 1 1

58 = 32 + 16 + 8 + 2  => 0011 1010

-58 => 0011 1010 => 1100 0101 => 1100 0110
83 = 64 + 16 + 2 + 1 => 0101 0011
-83 => 0101 0011 => 1010 1100 => 1010 1101

0101 1101 => 0 + 64 + 0 + 16 + 8 + 4 + 0 + 1 => 93
0011 1110 => 0 + 0 + 32 + 16 + 8 + 4 + 2 + 0 => 62
1010 1010 => 1010 1001 => 0101 0110 => 86 => -86
1101 1101 => 1101 1100 => 0010 0011 => 35 => -35

2.4 单个字节表示的整数范围(重中之重)
在计算机中单个字节表示8位二进制位,其中最高位代表符号位,若是0则表示非负数,若是1则表示负数,因此表示的整数范围如下:
非负数的范围:0000 0000 ~ 0111 1111 => 0 ~ 127 => 0 ~ 2^7-1
0111 1111 =>02^7 + 12^6 + 12^5 + 12^4 + 12^3 + 12^2 + 12^1 + 12^0
=> 0 + 64 + 32 + 16 + 8 + 4 + 2 + 1
=> 127
负数的范围:1000 0000 ~ 1111 1111 => -128 ~ -1 => -2^7 ~ -2^0
1000 0000 => 先减1: 0111 1111
=> 按位取反:1000 0000
=> 转十进制:128
=> 添加负号:-128
1111 1111 => 先减1: 1111 1110
=> 按位取反:0000 0001
=> 转十进制:1
=> 添加负号:-1
综上所述:
在计算机中单个字节所能表示的整数范围是:-2^7 ~ 2^7-1,也就是-128 ~ 127.

2.5 整数类型
在Java语言中用于描述整数数据的类型有:byte、short、int、long,推荐int类型。
其中byte类型在内存空间中占1个字节,表示的整数范围是:-2^7 ~ 2^7-1。
-128 ~ 127.
其中short类型在内存空间中占2个字节,表示的整数范围是:-2^15 ~ 2^15-1。
-32768 ~ 32767.
其中int类型在内存空间中占4个字节,表示的整数范围是:-2^31 ~ 2^31-1.
正负二十一亿之间
其中long类型在内存空间中占8个字节,表示的整数范围是:-2^63 ~ 2^63-1.
比int类型还大的数
在Java程序中直接写出的整数数据叫做直接量/字面值/常量,如:200等,而直接量默认是int类型,若希望表达long类型的直接量,则需要在直接量的后面加上l或者L,推荐使用L方式。

扩展:
在以后的开发中若希望表达比long类型范围还大的数,则借助java.math.BigInteger类型加以描述。

2.6 浮点类型
在Java语言中用于描述小数数据的类型有:float、double,推荐使用double类型
其中float类型在内存空间中占4个字节,叫做单精度浮点数,小数点后7位有效数字
其中double类型在内存空间中占8个字节,叫双精度返点数,小数点后15位有效数字
在Java程序中直接写出的小数数据叫做直接量/字面值/常量,如:3.14等,而直接量默认为double类型,若希望描述float类型的直接量,则需要在直接量后面加上f或者F.

扩展:
a.有余力的同学课下查询float类型的二进制结构(了解)
b.由于float和double类型运算时可能会有误差,为了实现精确运算可以直接java.math.BigDecimal类型加以描述。

练习:
提示用户输入下落时间t(整数),使用公式0.59.8t*t来计算下落的位移并打印出来

2.7 布尔类型
在Java语言中用于描述真假数据的类型是:boolean,数值只有两个:true 和 false
其中boolean类型在内存空间中所占的字节没有明确的规定,通常认为是1个字节。

 -------------------day03-------------------------

今天内容:
(1)数据类型
(2)运算符
(3)分支结构

1.数据类型
在Java语言中基本数据类型有:byte、short、int、long、float、double、boolean、char

1.1 字符类型
在Java语言中用于描述单个字符数据的类型是:char类型,如:‘1’、‘a’、'中’等
其中char类型在内存空间中占2个字节且没有符号位,表示范围是:0 ~ 65535.
由于现实生活中很少有数据可以用单个字符描述,因此以后的开发中很少使用char类型,而使用更多的是由多个字符串起来组成的字符串,使用String类型加以描述。
由于计算机的底层只识别0和1组成的二进制序列,因此像’a’这样的图案无法直接在计算机中存储,但现实生活中确实有这样的图案需要存储,为了使得这样的图案可以存储在计算机中就需要给该图案指定一个编号,将编号存储计算机中即可,这样的编号叫ASCII
要求大家记住的ASCII有:
‘a’ - 97 ‘A’ - 65 ‘0’ - 48 空格 - 32 换行符 - 10
要求大家记住的转义字符有:
" - " ’ - ’ \ - \ \n - 换行 \t - 制表符(tab键)

1.2 基本数据类型之间的转换
在Java语言中基本数据类型之间的转换有两种方式:
自动类型转换 - 主要指将小类型向大类型之间的转换。
强制类型转换 - 主要指将大类型向小类型之间的转换。
语法格式:目标类型 变量名 = (目标类型)源类型变量名
注意:
强转有风险,操作需谨慎!!!

2.运算符(重点)
2.1 算术运算符

  • 表示加法运算符 - 表示减法运算符 * 表示乘法运算符
    / 表示除法运算符 % 表示取模/取余运算符

2.2 关系/比较运算符

表示是否大于运算符 >= 表示是否大于等于运算符
< 表示是否小于运算符 <= 表示是否小于等于运算符
== 表示是否等于运算符 != 表示是否不等于运算符

所有以关系运算符作为最终运算的表达式结果一定是boolean类型

2.3 自增减运算符

  • 表示加法运算符 ++ 表示自增运算符,用于实现让变量自身的数值加1的效果
  • 表示减法运算符 – 表示自减运算符,用于实现让变量自身的数值减1的效果

2.4 逻辑运算符
&& 表示逻辑与运算符,相当于汉语中"并且",同真为真,一假为假。
|| 表示逻辑或运算符,相当于汉语中"或者",一真为真,同假为假。
! 表示逻辑非运算符,相当于汉语中"取反",真为假,假为真。

短路特性:
a.对于逻辑与运算符来说,若第一个条件为假则整个表达式为假,此时跳过第二个
条件不执行。
b.对于逻辑或运算符来说,若第一个条件为真则整个表达式为真,此时跳过第二个
条件不执行。

2.5 条件/三目运算符
条件表达式 ? 表达式1: 表达式2;
=> 判断条件表达式是否成立,若成立则执行表达式1,否则执行表达式2;

2.6 赋值运算符
(1)简单赋值
= 表示赋值运算符,用于将=右边的数据赋值给=左边的变量,覆盖变量原来的数值。
笔试题:
ia == 5; - 表示判断ia的数值是否等于5
5 == ia; - 表示判断5是否等于ia的数值,推荐该方式
ia = 5; - 表示将5赋值给变量ia,覆盖ia原来的数值
5 = ia; - 编译报错

(2)复合赋值
+=、 -=、 *=、 /=、 …
如:
int ia = 3;
ia = ia + 2; => ia = 5; 推荐该方式
ia += 2; => ia = 5;

2.7 运算符的优先级
a. ()的优先级极高;
b. =的优先级极低;
c. 若实在无法确认优先级,则使用()来确认即可;

     --------------day04------------------

今天内容:
(1)分支结构
(2)循环结构

1.分支结构(重中之重)
1.1 基本概念
在某些特殊场合中需要进行条件判断并做出选择时,就需要使用分支结构。

1.2 if分支结构
(1)语法格式
if(条件表达式) {
语句块;
}

(2)执行流程
判断条件表达式是否成立
=> 若成立,则执行{}中的语句块;
=> 若不成立,则跳过{}中的代码不执行;

1.3 if-else分支结构
(1)语法格式
if(条件表达式) {
语句块1;
} else {
语句块2;
}

(2)执行流程
判断条件表达式是否成立
=> 若成立,则执行语句块1;
=> 若不成立,则执行语句块2;

1.4 if-else if-else分支结构
(1)语法格式
if(条件表达式1) {
语句块1;
}
else if(条件表达式2) {
语句块2;
}

else {
语句块n;
}

(2)执行流程
判断条件表达式1是否成立
=> 若成立,则执行语句块1
=> 若不成立,则判断条件表达式2是否成立
=> 若成立,则执行语句块2
=> 若不成立,则执行语句块n

2.循环结构(重中之重、难点)
2.1 基本概念
在某些特殊场合中,若希望重复执行一段代码时,则需要使用循环结构。

2.2 for循环
(1)语法格式
for(初始化表达式; 条件表达式; 修改初始值表达式) {
循环体;
}

(2)执行流程
执行初始化表达式 => 判断条件表达式是否成立
=> 若成立,则执行循环体 => 执行修改初始值表达式 => 判断条件表达式是否成立
=> 若不成立,则循环结束

2.3 break 和 continue关键字
break关键字用在循环中表示跳出当前循环;
continue关键字使用在循环中表示结束本次循环继续下一次循环(会用即可);

2.4 特殊的循环
for(;

Java SE 基础知识体系梳理相关推荐

  1. Java SE 基础知识

    Java SE 基础知识 1 2 @(Notes)[J2SE, Notes] VICTORY LOVES PREPARATION. 特别说明: 该文档在马克飞象查阅最佳: 本部分知识还在迭代中,欢迎补 ...

  2. Java复习总结(二)Java SE基础知识

    Java SE面试题 目录 Java SE基础 基本语法 数据类型 关键字 面向对象 集合 集合类概述 Collection接口 进阶 线程 锁 JDK 反射 JVM GC io操作和NIO,AIO ...

  3. JAVA SE基础知识总结

    JAVA基础篇 1_JAVA语言概述 1.1 JAVA的总体概述 1.2 JAVA语言概述 1.2.1 基础常识 1.2.2 计算机语言的发展迭代史 1.2.3 Java语言版本迭代概述 1.2.4 ...

  4. Java SE基础知识(二)--整数的运算符

    Java SE 是什么,包括哪些内容(二)? 本文内容参考自Java8标准 一.代码运行机制相关的内容: 1.Java中的类型分类("你编程时能使用的类型全部在这里了"): ⑴.J ...

  5. Java SE 基础知识(一)

    一.基础知识 1. Java SE : Java Standard Edition Java ME : Java Micro Edition Java EE : Java Enterprise Edi ...

  6. Java SE 基础知识汇总

    目录 一.Java概述 1.1 Java语言背景 1.2 Java语言的三个版本 1.3 Java语言的跨平台原理 1.4 JRE和JDK 1.5 DOS命令 二.Java环境搭建 2.1 环境变量的 ...

  7. 准备Java面试之Java SE基础知识——问题篇

    由于这个月要开始面试了,所以重新把java SE的基础重新学习一遍,主要问题有如下37条.我将会在一周内更新完成答案. 作者:Xoper.ducky 链接:https://www.nowcoder.c ...

  8. Java SE基础知识详解第[12]期—集合(Set、Collections、Map、集合嵌套)

    写在前面: 每一个不曾起舞的日子,都是对生命的辜负. 希望看到这里的每一个人都能努力学习,不负韶华,成就更好的自己. 以下仅是个人学习过程中的一些想法与感悟,Java知识博大精深,作为初学者,个人能力 ...

  9. Java SE基础知识详解第[13]期—不可变集合、Stream流、异常

    写在前面: 每一个不曾起舞的日子,都是对生命的辜负. 希望看到这里的每一个人都能努力学习,不负韶华,成就更好的自己. 以下仅是个人学习过程中的一些想法与感悟,Java知识博大精深,作为初学者,个人能力 ...

最新文章

  1. Python安装MySQL模块
  2. msm8953+android8.1接听电话时声音由默认听筒输出改为外放输出
  3. EOJ_1082_Virtual Friends
  4. [20171130]关于rman的一些总结.txt
  5. Tensoflow-SSD代码解读(github-balancap代码)
  6. JVM证书制作步骤+耶鲁 CAS 配置
  7. selenium对浏览器属性操作的方法
  8. java 参数校验 优雅的,SpringBoot 如何优雅的进行参数校验
  9. DNS服务器构建(一)-—构建域名缓存服务器
  10. 关于自定义任务(Tasks)的心得(转载)
  11. Win10家庭版远程桌面工具RDP Wrapper
  12. Ubuntu14.04 WPS 安装
  13. 机器人学相关书籍(长期更新)
  14. 2012年中国最佳医院排行榜
  15. FLAC3D 的入门介绍
  16. 附录10-项目黑马面面
  17. shell 计算磁盘使用率
  18. OSChina 周四乱弹 ——一周五天在诈尸
  19. C++基础教学(二)基本数据类型计算
  20. 5.参数估计——点估计与区间估计概念,置信区间的公式求法与Python实现求出结果

热门文章

  1. php 导出表到excel文件格式,PHP导出数据到Excel
  2. teamlab什么意思_智己汽车 周三见!
  3. c语言 数组二合一,C语言合并两个数组并去重
  4. phpstorm配置mac php环境
  5. linux 的kernel文件夹里面没有makefile,makefile_linux kernel在哪儿_linux 内核配置机制(make menuconfig、Kconfi...
  6. 十分钟学会 “HUAWEI VR 6DOF SDK集成”视频教程
  7. pvp服务器有什么项目,你究竟为什么选择PVP服务器?
  8. Android Studio真机调试方法
  9. 天津机场停车场收费多少钱一小时,天津滨海机场t2停车场是哪个
  10. word 参考文献的引用