前言
有些同学可能会觉得奇怪,为什么会写这么一篇文章,Java基础不是大学就学过了吗,就这呀,这有什么好写的?
但是从事开发越久才越知道基础有多重要,不止Java基础,还有计算机网络基础与操作系统基础,这些编程的底层原理你真的搞清楚了吗?太多人只是不明就里的写着业务代码,码农这个词原来以为是自嘲,但对于很多程序员来说,却是真实写照,只不过手里的锄头换成了电脑而已。很多应届生去面试之前也会疯狂刷所谓的项目经验,当然了,不是说项目不重要,只是有点本末倒置了,万丈高楼平地起,基础不牢早晚有你头疼的时候。
最近有面试的家人们基础不好的话最好是赶紧补一补基础,特别是准备秋招的应届生,一个刚毕业的学生哪来那么多乱七八糟的项目经验,太假了,面试官对于应届生的要求是有没有培养价值,这个潜力怎么看呢?看的就是你的基础。
文末有2021年7月份最新Java面试八股文,需要的可以自行领取哦!
这篇文章只梳理Java基础,计算机跟操作系统,后面有时间也会单独写。我整理了一些经典的学习书籍电子档,毕竟程序员的书实在是太贵了,不可能每本都买实体
需要的同学点击传送门
就可以领取,无偿分享。
目录
- Java入门基础及环境搭建
- Java程序设计基础
- Java流程控制语句
- Java字符串处理
- Java数字和日期处理
- Java数组和基本排序算法
- Java类和对象
- Java类的封装、继承和多态
- Java异常处理
- Java集合、泛型和枚举
- Java反射机制
- Java输入输出流和文件操作
- Java多线程编程
- Java网络编程
- Java图形用户界面
一、Java入门基础及环境搭建
- 主要阐述Java语言的历史和面向对象设计的特点,Java语言在1995年由Sun公司推出,最后在2009年被Oracle收购,目前用得多得版本是JDK1.7和1.8。
- 阐述面向对象语言设计的思想,比较面向对象设计和面向过程设计的差异。
- Java JDK的下载和安装,以及环境变量的配置,使用记事本编写“Hello world”程序,然后使用CMD命令行编译和执行,正式入门Java语言的开发。
- 讲解Java程序语言的基本要素和编程规范,如何使用流行的IDE来编写程序,讲解NetBeans、Eclipse和IntelliJ IDEA等开发工具的安装和使用,如何编写、设置以及调试代码。
二、Java程序设计基础
1、讲解常量和变量的概念,声明方式和作用域。
常量通常也被称为“final变量”。常量在整个程序中只能被赋值一次。在为所有对象共享值时,常量是非常有用的。在Java语言中声明一个常量,除了要指定数据类型外,还需要通过final关键字进行限定。声明常量的标准语法格式如下:
final 数据类型 常量名称(=值)
在Java语言中,所有的变量在使用前必须声明。声明变量的基本格式如下:
type identifier [ = value][, identifier [= value] …] ;
格式说明:type为Java数据类型;identifier是变量名;可以使用逗号隔开来声明多个同类型变量。
int a, b, c; // 声明三个int型整数:a、b、c
int d = 3, e = 4, f = 5; // 声明三个整数并赋予初值
byte z = 22; // 声明并初始化z
String s = "runoob"; // 声明并初始化字符串s
double pi = 3.14159; // 声明了双精度浮点型变量 pi
char x = 'x'; // 声明变量x的值是字符 'x'
变量虽然是由程序员所命名的,但是变量的命名并不是任意的,需要遵循一定的规则:
- 变量名必须是一个有效的标识符。
- 变量名不能重复。
- 应选择有意义的单词作为变量名。在命名变量名时,最好能通过变量名看出变量的内容,这样既能方便读者对程序的理解,增加可读性,又方便程序的维护,减轻程序维护人员的工作负担。
2、8种基本数据类型的定义和概念。
[图片上传失败…(image-6eceb6-1627547262466)]
3、Java运算符的介绍,诸如算术、赋值、逻辑、关系、自增和自减、位和条件运算符,还包括运算符计算优先级的说明。
- 算数运算符
算术运算符包括通常的加(+)、减(-)、乘(*)、除(/)、取模(%),完成整数型和浮点型数据的算术运算。关系运算符
- 关系运算符
关系运算符用来比较两个值,包括大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)和不等于(!=)6种
- 逻辑运算符
逻辑运算符包括逻辑与(&&)、逻辑或(||)和逻辑非(!)。
- 位运算符
位运算符用来对二进制位进行操作,包括按位取反(~)、按位与(&)、按位或(|)、异或(^)、右移(>>)、左移(<<)和无符号右移(>>>)。
- 赋值运算符
赋值运算符的作用就是将常量、变量或表达式的值赋给某一个变量。
除了“=”,其它的都是特殊的赋值运算符,以“+=”为例,x += 3就相当于x = x + 3,首先会进行加法运算x+3,再将运算结果赋值给变量x。-=、*=、/=、%=赋值运算符都可依此类推。
条件运算符
条件运算符( ? : )也称为 “三元运算符”或“三目运算符”。
语法形式:布尔表达式 ? 表达式1 :表达式2。
运算过程:如果布尔表达式的值为 true ,则返回 表达式1 的值,否则返回 表达式2 的值。
运算符的优先次序
在对一个表达式进行计算时,如果表达式中含有多种运算符,则要安运算符的优先次序一次从高向低进行。运算符的优先次序如下:
4、Java基本数据类型的转换。
- 自动类型转换
自动类型转换是指:数字表示范围小的数据类型可以自动转换成范围大的数据类型。
如:
long l = 100;
int i = 200;
long ll = i;
具体自动转换如如下图所示。
强制类型转换
强制类型转换我们再清楚不过了,即强制显示的把一个数据类型转换为另外一种数据类型。
如:
short s = 199;
int i = s;// 199
double d = 10.24;
long ll = (long) d;// 10
以上的转换结果都在我们的预期之内,属于正常的转换和丢失精度的情况,下面的例子就一样属于数据溢出的情况。
int ii = 300;
byte b = (byte)ii;
300 已经超出了 byte 类型表示的范围,所以会转换成一个毫无意义的数字。
- 类型提升
所谓类型提升就是指在多种不同数据类型的表达式中,类型会自动向范围表示大的值的数据类型提升。
把上面的溢出的例子再改下。
long count = 100000000;
int price = 1999;
long totalPrice = price * count;
price 为 int 型,count 为 long 型,运算结果为 long 型,运算结果正常,没有出现溢出的情况。
三、Java流程控制语句
程序的结构分类:
顺序结构:按照写代码的顺序 一次执行
选择结构:根据条件的不同有选择的执行不同的代码
循环结构:在一定条件下 反复执行某一片代码
选择结构:
也叫分支结构 根据条件的不同,有选择的执行某一片代码 ,Java提供了两种 if结构 switch结构
if分为三种格式 :
if的第一种格式 if(条件){
语句块
} 执行流程: 先判断条件, 如果为真 则语句块执行, 否则 语句块不执行
代码演示:
1 public static void main(String[] args) {
2 System.out.println("开始");
3 // 定义两个变量
4 int a = 10;
5 int b = 20;
6
7 if (a == b) {
8 System.out.println("a等于b");
9 }
10
11 int c = 10;
12 if (a == c) {
13 System.out.println("a等于c");
14 }
15
16 System.out.println("结束");
17 }
if的第二种格式:
if(条件){
语句块 1
}else{
语句块2
}
执行流程: 先判断条件的真假, 如果为真 则只执行语句块1, 否则, 只执行语句块2
代码演示:
1 public static void main(String[] args) {
2 System.out.println("开始");
3 // 判断给定的数据是奇数还是偶数
4 // 定义变量
5 int a = 100;
6 // 给a重新赋值
7 a = 99;
8
9 if (a % 2 == 0) {
10 System.out.println("a是偶数");
11 } else {
12 System.out.println("a是奇数");
13 }
14
15 System.out.println("结束");
16 }
if语句的第三种格式:
if(条件1){
语句块1
}else if(条件2){
语句块2
}else if(条件3){
语句块3
}
…
else if(条件n){
语句块n
}else{
语句块n+1
}
执行流程: 先判断条件1 ,如果为真 则执行语句块1,执行完毕,跳出整个if结构执行if下面的语句, 否则判断条件2,
如果条件2为真,则执行语句块2,执行完毕跳出
整个if结构执行if下面的语句, 如果条件2也为假,则判断条件3 ,如果为真… 如果判断到条件n都为假,
则执行else中的语句块n+1 代码演示: x和y的关系满足如下:
x>=3 y = 2x + 1;
-1<=x<3 y =