JAVA基础语法
预计更新
### 第一节:什么是JAVA
– JAVA的背景和历史
– JAVA的特点和应用领域
– 如何安装和配置JAVA开发环境
### 第二节:JAVA基础语法
– JAVA的基本数据类型和变量
– 运算符和表达式
– 控制流语句和循环语句
### 第三节:面向对象编程
– 面向对象编程的基本概念
– 类和对象的定义和使用
– 继承、封装和多态
### 第四节:异常处理
– 异常的概念和分类
– 异常处理的语法和机制
– 自定义异常类的编写和使用
### 第五节:输入输出流
– 输入输出流的概念和分类
– 文件输入输出流的使用
– 字节流和字符流的区别和使用
### 第六节:集合框架
– 集合框架的基本概念和分类
– List、Set和Map的使用
– 自定义集合类的编写和使用
### 第七节:多线程编程
– 多线程编程的概念和优势
– 线程的创建和启动
– 线程同步和互斥机制
### 第八节:网络编程
– 网络编程的基本概念和应用场景
– Socket编程的基本流程
– HTTP协议和网络安全
### 第九节:数据库编程
– 数据库编程的基本概念和应用场景
– JDBC的使用和实现原理
– SQL语句的编写和优化
在Java中,变量是程序中存储数据的基本单元。在使用变量之前,我们需要定义它们的类型。Java中有八种基本数据类型,它们分别是byte、short、int、long、float、double、char和boolean。本文将详细介绍这些基本数据类型和变量,并提供一些实用的技巧和建议。
## 一、基本数据类型
### 1. byte
byte是一种8位有符号整数类型,它可以存储-128到127之间的整数。byte类型通常用于处理二进制数据,如图像和音频文件等。
### 2. short
short是一种16位有符号整数类型,它可以存储-32768到32767之间的整数。short类型通常用于处理较小的整数值。
### 3. int
int是一种32位有符号整数类型,它可以存储-2147483648到2147483647之间的整数。int类型是Java中最常用的整数类型之一。
### 4. long
long是一种64位有符号整数类型,它可以存储-9223372036854775808到9223372036854775807之间的整数。long类型通常用于处理较大的整数值。
### 5. float
float是一种32位单精度浮点数类型,它可以存储大约7位有效数字的浮点数。float类型通常用于处理需要高精度计算的科学和工程应用程序。
### 6. double
double是一种64位双精度浮点数类型,它可以存储大约15位有效数字的浮点数。double类型是Java中最常用的浮点数类型之一。
### 7. char
char是一种16位无符号Unicode字符类型,它可以存储任何Unicode字符。char类型通常用于处理文本和字符数据。
### 8. boolean
boolean是一种布尔类型,它可以存储true或false值。boolean类型通常用于控制程序的流程和逻辑。
## 二、变量
在Java中,变量是程序中存储数据的基本单元。变量可以存储不同类型的数据,包括基本数据类型和对象。在使用变量之前,我们需要定义它们的类型和名称。下面是定义变量的基本语法:
“`
<数据类型> <变量名> = <初始值>;
“`
其中,数据类型是变量的类型,变量名是变量的名称,初始值是变量的初始值(可选)。下面是一些定义变量的示例:
“`
int num = 10; // 定义一个整数变量num,并初始化为10
double pi = 3.14; // 定义一个双精度浮点数变量pi,并初始化为3.14
char ch = \’A\’; // 定义一个字符变量ch,并初始化为\’A\’
boolean flag = true; // 定义一个布尔变量flag,并初始化为true
String str = \”Hello, World!\”; // 定义一个字符串变量str,并初始化为\”Hello, World!\”
“`
在使用变量之前,我们需要先声明它们。下面是声明变量的基本语法:
“`
<数据类型> <变量名>;
“`
其中,数据类型是变量的类型,变量名是变量的名称。下面是一个声明变量的示例:
“`
int num; // 声明一个整数变量num
“`
在声明变量之后,我们可以给它们赋值。下面是给变量赋值的基本语法:
“`
<变量名> = <值>;
“`
其中,变量名是变量的名称,值是变量的值。下面是一个给变量赋值的示例:
“`
num = 20; // 给变量num赋值为20
“`
我们也可以在声明变量时初始化它们。下面是一个声明和初始化变量的示例:
“`
int num = 10; // 声明一个整数变量num,并初始化为10
“`
## 三、总结
在Java中,变量是程序中存储数据的基本单元。Java中有八种基本数据类型,它们分别是byte、short、int、long、float、double、char和boolean。在使用变量之前,我们需要先定义它们的类型和名称,然后可以给它们赋值。定义变量的基本语法是<数据类型> <变量名> = <初始值>;,声明变量的基本语法是<数据类型> <变量名>;,给变量赋值的基本语法是<变量名> = <值>;。
在Java中,运算符和表达式是程序中最基本的组成部分之一。运算符是用于执行各种数学和逻辑操作的符号,而表达式是由运算符、操作数和操作符组成的计算式。本文将详细介绍Java中的运算符和表达式,并提供一些实用的技巧和建议。
## 一、算术运算符
Java中的算术运算符用于执行基本的数学运算,如加、减、乘和除等。下面是Java中的算术运算符:
| 运算符 | 描述 |
|——–|————–|
| + | 加法 |
| – | 减法 |
| * | 乘法 |
| / | 除法 |
| % | 取模(求余) |
下面是一些使用算术运算符的示例:
“`
int a = 10;
int b = 20;
System.out.println(\”a + b = \” + (a + b)); // 输出30
System.out.println(\”a – b = \” + (a – b)); // 输出-10
System.out.println(\”a * b = \” + (a * b)); // 输出200
System.out.println(\”b / a = \” + (b / a)); // 输出2
System.out.println(\”b % a = \” + (b % a)); // 输出0
“`
## 二、赋值运算符
Java中的赋值运算符用于给变量赋值。下面是Java中的赋值运算符:
| 运算符 | 描述 |
|——–|———-|
| = | 赋值 |
| += | 加并赋值 |
| -= | 减并赋值 |
| *= | 乘并赋值 |
| /= | 除并赋值 |
| %= | 取模并赋值 |
下面是一些使用赋值运算符的示例:
“`
int a = 10;
int b = 20;
a += b; // 等价于a = a + b;
System.out.println(\”a = \” + a); // 输出30
a -= b; // 等价于a = a – b;
System.out.println(\”a = \” + a); // 输出10
a *= b; // 等价于a = a * b;
System.out.println(\”a = \” + a); // 输出200
a /= b; // 等价于a = a / b;
System.out.println(\”a = \” + a); // 输出10
a %= b; // 等价于a = a % b;
System.out.println(\”a = \” + a); // 输出10
“`
## 三、比较运算符
Java中的比较运算符用于比较两个值的大小或相等性。下面是Java中的比较运算符:
| 运算符 | 描述 |
|——–|———–|
| == | 等于 |
| != | 不等于 |
| > | 大于 |
| < | 小于 |
| >= | 大于等于 |
| <= | 小于等于 |
下面是一些使用比较运算符的示例:
“`
int a = 10;
int b = 20;
System.out.println(\”a == b: \” + (a == b)); // 输出false
System.out.println(\”a != b: \” + (a != b)); // 输出true
System.out.println(\”a > b: \” + (a > b)); // 输出false
System.out.println(\”a < b: \” + (a < b)); // 输出true
System.out.println(\”a >= b: \” + (a >= b)); // 输出false
System.out.println(\”a <= b: \” + (a <= b)); // 输出true
“`
## 四、逻辑运算符
Java中的逻辑运算符用于执行逻辑运算,如与、或和非等。下面是Java中的逻辑运算符:
| 运算符 | 描述 |
|——–|———-|
| && | 逻辑与 |
| \\|\\| | 逻辑或 |
| ! | 逻辑非 |
下面是一些使用逻辑运算符的示例:
“`
boolean a = true;
boolean b = false;
System.out.println(\”a && b: \” + (a && b)); // 输出false
System.out.println(\”a || b: \” + (a || b)); // 输出true
System.out.println(\”!a: \” + !a); // 输出false
System.out.println(\”!b: \” + !b); // 输出true
“`
## 五、位运算符
Java中的位运算符用于执行二进制位操作。下面是Java中的位运算符:
| 运算符 | 描述 |
|——–|————|
| & | 按位与 |
| \\| | 按位或 |
| ^ | 按位异或 |
| ~ | 按位取反 |
| << | 左移 |
| >> | 右移 |
| >>> | 无符号右移 |
下面是一些使用位运算符的示例:
“`
int a = 60; // 二进制表示为0011 1100
int b = 13; // 二进制表示为0000 1101
System.out.println(\”a & b: \” + (a & b)); // 输出12,二进制表示为0000 1100
System.out.println(\”a | b: \” + (a | b)); // 输出61,二进制表示为0011 1101
System.out.println(\”a ^ b: \” + (a ^ b)); // 输出49,二进制表示为0011 0001
System.out.println(\”~a: \” + (~a)); // 输出-61,二进制表示为1100 0011
System.out.println(\”a << 2: \” + (a << 2)); // 输出240,二进制表示为1111 0000
System.out.println(\”a >> 2: \” + (a >> 2)); // 输出15,二进制表示为0000 1111
System.out.println(\”a >>> 2: \” + (a >>> 2));// 输出15,二进制表示为0000 1111
“`
## 六、三目运算符
Java中的三目运算符也称为条件运算符,它是一种简洁的if-else语句的替代形式。下面是Java中的三目运算符的基本语法:
“`
<条件> ? <表达式1> : <表达式2>
“`
其中,条件是一个布尔表达式,如果条件为true,则执行表达式1,否则执行表达式2。下面是一个使用三目运算符的示例:
“`
int a = 10;
int b = 20;
int max = (a > b) ? a : b;
System.out.println(\”max = \” + max); // 输出20
“`
## 七、总结
在Java中,运算符和表达式是程序中最基本的组成部分之一。Java中的运算符包括算术运算符、赋值运算符、比较运算符、逻辑运算符和位运算符等。算术运算符用于执行基本的数学运算,赋值运算符用于给变量赋值,比较运算符用于比较两个值的大小或相等性,逻辑运算符用于执行逻辑运算,位运算符用于执行二进制位操作。我们也介绍了三目运算符,它是一种简洁的if-else语句的替代形式。熟练掌握Java中的运算符和表达式对于开发高质量的Java应用程序至关重要。
在Java中,控制流语句和循环语句是控制程序执行流程的关键。掌握这些语句可以让程序员更加灵活地控制程序的执行流程,实现更加复杂的业务逻辑。本文将详细介绍Java中的控制流语句和循环语句,并提供一些实用的技巧和建议。
## 一、if语句
Java中的if语句用于根据给定的条件选择是否执行一段代码块。下面是Java中if语句的基本语法:
“`
if (条件) {
// 代码块
}
“`
其中,条件是一个布尔表达式,如果条件为true,则执行代码块中的语句。下面是一个使用if语句的示例:
“`
int score = 80;
if (score >= 60) {
System.out.println(\”及格了!\”);
}
“`
在上面的示例中,如果score大于等于60,则输出\”及格了!\”。
## 二、if-else语句
Java中的if-else语句用于根据给定的条件选择执行哪个代码块。下面是Java中if-else语句的基本语法:
“`
if (条件) {
// 代码块1
} else {
// 代码块2
}
“`
其中,如果条件为true,则执行代码块1中的语句;否则执行代码块2中的语句。下面是一个使用if-else语句的示例:
“`
int score = 80;
if (score >= 60) {
System.out.println(\”及格了!\”);
} else {
System.out.println(\”不及格!\”);
}
“`
在上面的示例中,如果score大于等于60,则输出\”及格了!\”;否则输出\”不及格!\”。
## 三、if-else if-else语句
Java中的if-else if-else语句用于根据给定的多个条件选择执行哪个代码块。下面是Java中if-else if-else语句的基本语法:
“`
if (条件1) {
// 代码块1
} else if (条件2) {
// 代码块2
} else {
// 代码块3
}
“`
其中,如果条件1为true,则执行代码块1中的语句;如果条件1为false且条件2为true,则执行代码块2中的语句;否则执行代码块3中的语句。下面是一个使用if-else if-else语句的示例:
“`
int score = 80;
if (score >= 90) {
System.out.println(\”优秀!\”);
} else if (score >= 80) {
System.out.println(\”良好!\”);
} else if (score >= 60) {
System.out.println(\”及格!\”);
} else {
System.out.println(\”不及格!\”);
}
“`
在上面的示例中,如果score大于等于90,则输出\”优秀!\”;如果score大于等于80且小于90,则输出\”良好!\”;如果score大于等于60且小于80,则输出\”及格!\”;否则输出\”不及格!\”。
## 四、switch语句
Java中的switch语句用于根据给定的值选择执行哪个代码块。下面是Java中switch语句的基本语法:
“`
switch (表达式) {
case 值1:
// 代码块1
break;
case 值2:
// 代码块2
break;
…
default:
// 代码块n
break;
}
“`
其中,表达式的值将与每个case语句后的值进行比较,如果匹配,则执行对应的代码块。如果没有匹配的值,将执行default代码块。下面是一个使用switch语句的示例:
“`
int dayOfWeek = 3;
switch (dayOfWeek) {
case 1:
System.out.println(\”星期一\”);
break;
case 2:
System.out.println(\”星期二\”);
break;
case 3:
System.out.println(\”星期三\”);
break;
case 4:
System.out.println(\”星期四\”);
break;
case 5:
System.out.println(\”星期五\”);
break;
default:
System.out.println(\”周末\”);
break;
}
“`
在上面的示例中,如果dayOfWeek的值为3,则输出\”星期三\”。
## 五、while循环
Java中的while循环用于重复执行一段代码块,直到给定的条件不再为true。下面是Java中while循环的基本语法:
“`
while (条件) {
// 代码块
}
“`
其中,如果条件为true,则重复执行代码块中的语句。下面是一个使用while循环的示例:
“`
int i = 1;
while (i <= 5) {
System.out.println(i);
i++;
}
“`
在上面的示例中,如果i的值小于等于5,则输出i的值,并将i的值加1。
## 六、do-while循环
Java中的do-while循环也用于重复执行一段代码块,直到给定的条件不再为true。与while循环不同的是,do-while循环至少会执行一次代码块。下面是Java中do-while循环的基本语法:
“`
do {
// 代码块
} while (条件);
“`
其中,先执行一次代码块中的语句,然后判断条件是否为true,如果为true,则继续重复执行代码块中的语句。下面是一个使用do-while循环的示例:
“`
int i = 1;
do {
System.out.println(i);
i++;
} while (i <= 5);
“`
在上面的示例中,先输出i的值,然后将i的值加1,重复执行直到i的值大于5。
## 七、for循环
Java中的for循环用于重复执行一段代码块,通常用于遍历数组或集合。下面是Java中for循环的基本语法:
“`
for (初始化表达式; 条件表达式; 更新表达式) {
// 代码块
}
“`
其中,初始化表达式在循环开始前执行,条件表达式在每次循环开始前执行,更新表达式在每次循环结束后执行。下面是一个使用for循环的示例:
“`
for (int i = 1; i <= 5; i++) {
System.out.println(i);
}
“`
在上面的示例中,先将i的值初始化为1,然后判断i的值是否小于等于5,如果是,则输出i的值,并将i的值加1。
## 八、增强型for循环
Java中的增强型for循环用于遍历数组或集合,其语法比较简洁,常用于简单的遍历操作。下面是Java中增强型for循环的基本语法:
“`
for (元素类型 元素变量 : 数组或集合) {
// 代码块
}
“`
其中,元素类型是数组或集合中的元素类型,元素变量用于接收每个元素的值。下面是一个使用增强型for循环的示例:
“`
int[] numbers = {1, 2, 3, 4, 5};
for (int number : numbers) {
System.out.println(number);
}
“`
在上面的示例中,遍历数组numbers中的每个元素,并输出其值。
## 九、break语句
Java中的break语句用于跳出循环语句或switch语句,通常用于在满足某个条件时提前结束循环。下面是Java中break语句的基本语法:
“`
break;
“`
在循环语句或switch语句中,执行break语句将立即终止循环或switch语句的执行,并跳转到循环或switch语句后面的下一条语句。下面是一个使用break语句的示例:
“`
int[] numbers = {1, 2, 3, 4, 5};
for (int number : numbers) {
if (number == 3) {
break;
}
System.out.println(number);
}
“`
在上面的示例中,遍历数组numbers中的每个元素,如果元素的值等于3,则跳出循环。
## 十、continue语句
Java中的continue语句用于跳过循环中剩余的语句,直接进入下一次循环。通常用于在满足某个条件时跳过当前循环。下面是Java中continue语句的基本语法:
“`
continue;
“`
在循环语句中,执行continue语句将跳过当前循环中剩余的语句,并进入下一次循环。下面是一个使用continue语句的示例:
“`
int[] numbers = {1, 2, 3, 4, 5};
for (int number : numbers) {
if (number == 3) {
continue;
}
System.out.println(number);
}
“`
在上面的示例中,遍历数组numbers中的每个元素,如果元素的值等于3,则跳过当前循环,否则输出元素的值。
## 总结
控制流语句和循环语句是Java中非常重要的语言特性,掌握它们可以让程序员更加灵活地控制程序的执行流程,实现更加复杂的业务逻辑。在本文中,我们介绍了Java中的if语句、if-else语句、if-else if-else语句、switch语句、while循环、do-while循环、for循环、增强型for循环、break语句和continue语句,并提供了一些实用的技巧和建议。希望本文能够帮助初学者更好地理解和掌握Java中的控制流语句和循环语句。
Java精选十大语法,快来瞅瞅
日常开发中,我们经常使用泛型、自动拆箱和装箱、内部类、增强for循环、try-with-resources语法、lambda表达式等,因为这些特性可以帮助我们减少开发工作量;但是,我们从来没有认真研究过这些特性的本质是什么,所以这篇文章,就可以为您揭示这些特性背后的真相。
集合的创建、赋值一步到位,想不想学?
来,上边跟我一起画个List,在你下边画一个Map……
注意到上面size的写法没有?
明明可以写成:
他非要写成:
这么花式的写法来自JDK包装类java.lang.Byte里面的静态方法。
为什么要这么写呢?
这样的写法在JDK里面有很多,大家看到这些写法都会觉得很奇怪。
真正缘由无从考察,但栈长我觉得写JDK的大神其实就想告诉你,Byte的256个数是由-128~127这个范围组成的,起到一个标识数字范围的作用而已。
这两个变量来自java.util.HashMap源码,你可能也非常好奇为什么不直接写成数字,要弄一个移位“骚操作”?
这是在告诉开发者,HashMap的容量大小必须是2的幂次,不然会造成空间浪费。
以上同样来自java.util.HashMap的源码,为什么不直接用values:
而要重新定义一个vs来绕一个弯呢?
这样写不是更简单么?
JDK里面大量这样的写法,这是为什么呢?!
那是因为操作局部变量要比读取全局变量要更快,另外,还有一个好处,再申明一下局部变量,可以很明显的看到这个变量的类型,而不要翻到上面或者用鼠标移上去来看变量类型。
另外提一点,上面的复制变量再操作的方式让我想到了CopyOnWriteArrayList,这也是让当前变量不被其他线程改变保证当前线程变量一致性的一种方式。
写JDK源码的都是大神啊,透过源码,我们能学到太多东西!
来看一段泛型的灵活运用:
这个泛型方法写得厉害吧,泛型T、R、通配符(?)、上边界(extends)和下边界(super)都用上了!
常用的泛型含义:
T-Type(类型)
R-Result(结果)
K-Key(键)
V-Value(值)
E-Element(元素)
N-Number(数字)
?-不确定类型
上面的泛型我们应该有常见到吧,边界和通配符不懂的可以看下这篇文章吧:困扰我多年的Java泛型和,终于搞清楚了。
Lambda表达式这是Java8里面添加的新特性,用来简化匿名内部类以及结合函数式接口编程用的。
如下面创建线程的示例:
三个不同的写法,我们再也不用写newRunnable()的一大堆的匿名内部类了,是不是很清爽了!
如果你还不会用Lambda表达式,那真的OUT了。
下面是一个Lambada真实案例:
上述示例省去了newCommandLineRunner的匿名内部类的过程。
上面有提到函数式编程,这是Java8里面添加的新特性,我之前在公众号里已经写过很多Java新特性的教程,这也不是新玩法了,已经被玩烂了。
来看一个真实的案例,来自SpringBoot的邮件发送自动配置:
第一次看到这段代码的时候,我内心是拒绝的,很难理解。
上面的from和to方法分别用到了Supplier和Consumer函数式接口,还用到了双冒号::结合使用,讳莫如深,还能结合Lambda表达式使用。
函数式编程很厉害,虽然会用,但到现在我也觉得很高深,可读性和可理解性太差了,但是,看着厉害图片。
没错,你看到的这个关闭流骚操作是Java9的新语法糖,较Java7又简化了try-with-resources用法,显摆的姿势越来越多了。
关于try-with-resources的详细介绍及演进过程,
Java10刚出来的时候,我写过两篇新特性文章:
Java10的10个新特性,将彻底改变你写代码的方式!
Java10实战第1篇:局部变量类型推断
来,我再挑两个示例来欣赏下:
示例1:
示例2
类型推断出来后,都说Java越来越像Javascript了,其实就是Java10增加的一种语法糖而已,在编译期间会自动推断实际类型,其编译后的字节码和实际类型一致。
instanceof模式是匹配这是Java14推出来的新特性:
匹配后直接创建对象和赋值直接拿来用,不需要再添加强制转换的代码,大大提高了可读性和安全性。具体可以看这篇文章:Java14之模式匹配,非常赞的一个新特性!
Java初学者需要了解的10个语法细节
语法语法,语法就是语言的法则。汉语有汉语的语法,英语有英语的语法,如果不懂语法那你写出来的句子要不然就是错误,要不然就是生涩难懂。要学习和使用Java语言就要遵守Java语言的规则,要不然你的程序就不是Java程序,下面聊聊学习Java都需要注意哪些语言规则。
1、Java中区分大小写。类和接口名首字母必须大写,采用驼峰命名法,每一个名单词的首字母大写,例如:MyFirstJavaProgram;
2、类名和源文件名必须一致;例如下面的程序
public class FirstJava{
public static void main(String [] arg0){
System.out.println(\”My First Java File\”); //输出一句话:My First Java File
}
}
类名是FirstJava,那么你保存的源程序文件名为FirstJava.java。
3、方法名大小写都行,一般来说都是第一个单词小写,后面的单词还是采用驼峰命名法,例如:getValue(),setValue(int value);
4、成员变量名大小写都行,一般都是第一个单词小写。如果是全局静态变量或者常量全部单词都要大写,例如:public static int VALUE = 10;public static final int VALUE = 10;
5、方法参数大小写都行,一般都是第一个单词小写;
6、所有Java程序的入口是public static void main(String [] arg0)方法,所以看程序一般都是从main方法看起;
7、Java程序中的分号\”;\”表示你这句话说完了,一句话说完了就另起一行,不要想着节省纸张。
8、Java标识符:Java中所有的名字(类名、方法名、变量、常量)统称为标识符,关于标识符有以下几点需要注意:
a:标识符是大小写敏感的;
b:所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始 ,首字符之后可以是任何字符的组合;
c:Java关键字不能用作标识符 ;
例如:
合法标识符举例:age、$salary、_value、__1_value
非法标识符举例:123abc、-salary、#name、25name、class、&time、if
9、Java中的注释。注释就是辅助说明你的程序,方便阅读,注释的部分会被Java编译器忽略掉。注释分为单行注释(\”//\”或者\”/* …………*/\”)和多行注释(/** ………*/),
/**
* 程序的入口方法。(这个是多行注释)
*/
public static void main(String[] args) {
/* 打印一句话 (这是单行注释) */
System.out.println();// 打印一句话(这是单行注释)
}
10、Java中的空行。空行会被编译器忽略,用空行多是为了让程序整洁易读。
写代码重要的是整洁、易读,让自己和别人都看得懂很重要。这里可能有人会说我自己写的代码我还不知道,如果你这样认为那你肯定没有写过多少代码。在工作中有的时候你是做很多项目,做完一个再做一个之后让你回头改第一个项目的bug这个时候如果你的代码写的不整洁也没有添加注释的话你有你受的,这也是给写程序的人们一个建议。聊完Java语法,还需要知道Java类和对象的基本知识,下一篇文章将会聊聊Java类和对象。
如果想了解更多与编程有关的东西,请关注微信公众号:程序员互动联盟(coder_online)
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。