Java语言基础
一、注释
注释:程序里由程序员添加的说明性信息。
注释并不是Java代码,因此编译器不会对注释进行编译。—即:被注释的内容不会当代码来看待
注释只是给人看的,方便人更好的解读程序。
☆☆ 作为一个程序员,一定要养成写注释的好习惯。
Java程序中的三种注释
(1)单行注释
顾名思义:只注释一行。
用法:// + 注释内容
例如:// 下面一行代码用户读取数据库中的商品分类
快捷键:Ctrl+/ 快速的添加注释以及取消注释。
鼠标先选中要注释的行(可以是多行),然后按Ctrl+/,这样就会选中的行每行加一个单行注释。再按一下Ctrl+/会取消注释。
(2)多行注释
顾名思义:注释内容占多行。
用法:/ 注释内容 /
例如:
/*
如果注释内容比较多,可以使用多行注释
我是第二行注释
*/
快捷键:Ctrl+shift+/ 作用是给选中的行(可以是多行)添加多行注释。
快捷键:Ctrl+shift+\ 作用是取消选中行的多行注释。
鼠标先选中要注释的行(可以是多行),然后按Ctrl+shift+/,这样就会选中的行添加多行注释。想要取消多行注释,先选中要取消注释的行,按Ctrl+shift+\。
(3)文档注释
按文档的格式进行注释。这种注释通常用于描述一个类和类中的方法。
用法: /** 注释内容 */
例如:
/**
* 这是文档注释
* @author lanou
* @version 1.0
*/
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qbFTh3v2-1615184113463)(05_Java语言基础/文档注释关键字.png)]
文档注释的使用
(1)直接使用javadoc.exe来生成文档。
首先通过命令行,进入.java文件所在的目录.
输入命令 javadoc xx.java
(2)使用Eclipse生成文档。
Eclipse提供了生成文档的功能,我们可以直接生成文档. 生成文档时,需要配置javadoc.exe的路径.
eclipse中可以通过指定编码格式的问题,解决乱码问题。
-encoding UTF-8 -charset UTF-8
写注释的原则:
- 给类、方法写文档注释。-----能帮你生成文档。
- 给代码加单行或者多行注释。
二、关键字
关键字:就是被Java语言提前赋予特定含义的单词。
关键字属于Java语言中内置好功能的单词,不同的关键字表示不同的含义。
关键字:一般都是全小写书写。而且在专业的开发工具里都会显示出特殊的颜色。
Java中定义了几十个关键字,下面简单列举几个(后面的学习过程中,用到哪个单独讲哪个):
关键字 | 作用 |
---|---|
class | 用于定义类 |
abstract | 表明类或者成员方法具有抽象属性 |
for | for循环 |
if | 条件语句的引导词 |
… | … |
三、常量
常量:程序运行过程中,其值不可以发生改变的量。
常量类型 | 说明 | 示例 |
---|---|---|
字符串常量 | 用双引号引起来的内容 | “张三”,“hello world” |
整型常量 | 整数 | 100, -32,9527 |
小数常量 | 小数 | 3.14,-8.6 |
字符常量 | 用单引号引起来的内容 | ‘A’,‘2’,‘帅’ |
布尔常量 | 布尔值,只有2个 | true,false |
空常量 | 一个特殊的值,即空值 | null |
四、控制台输出语句
(1)System.out.println(要输出的内容);
作用:把 括号里 的内容输出到控制台进行显示,内容结尾会加一个换行符。
括号里的内容可以是数字,可以是字符,可以是字符串,可以是对象(后面学习)。
快捷键:先输入sout,然后按Alt+/
转义字符
通常情况下,输出字符串时,字符串会原样显示,但是如果字符串中出现了特殊字符(\,"),就会无法正常显示,想要正常显示,需要使用转义字符进行转义。
常见的转义字符如下:
转义字符 | 含义 |
---|---|
\\ | 代表一个反斜线符号"\" |
\" | 代表一个双引号字符 " |
\n | 换行,将当前位置移到下一行开头 |
\t | 跳到下一个TAB位置 |
(2)System.out.print(要输出的内容);
作用:把 括号里 的内容输出到控制台进行显示。
同上个相比,它不换行。
练习:
- 输出自己的名字,年龄,性别。
- 输出一个长方形
- 输出一个三角形
- 输出一个“520”
- 输出自己的名字(多行输出语句拼出来)
- 输出一个❤型
五、数据类型
在讲数据类型之前,我们先说一下计算机存储单元。
(1)计算机存储单元
计算机存储设备的最小存储单位是**“位(bit)”**,我们称之为比特位,通常用小写字母b表示。
而计算机最小存储单位是**“字节(Byte)”**,通常用B表示,字节是由连续的8个位组成的,即:1Byte=8bits。
除了字节以外,还有一些别的存储单位,例如:KB,MB,GB,TB等
1KB = 1024B,
1MB = 1024KB,
1GB = 1024MB,
1TB = 1024GB。
Java语言是强类型语言。所谓的强类型指的是数据都要归属于某一种数据类型,不同的数据类型分配了不同大小的存储空间,所以它们能表示的数据大小也不一样。
(2)数据类型的分类
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xCMVNm4A-1615184113480)(05_Java语言基础/数据类型分类.jpg)]
(3)基本数据类型内存占用和取值范围
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uycvi0XP-1615184113504)(05_Java语言基础/数据类型数值范围.jpg)]
数据类型影响了三方面:
- 能存放什么数据(整数、小数、字符、布尔)
- 你占用了多少内存(1字节、4字节)
- 你能表示的数据的范围有多大。
(4)数据的默认类型
整数的默认类型是int。 200,系统默认200是int类型的。200l表示数据是long类型。
小数的默认类型是double。 3.14,系统默认是double类型的。
六、变量
如何更高效的把下面输入语句中的100改成200?
System.out.println(100);
System.out.println(100);
System.out.println(100);
System.out.println(100);
System.out.println(100);
System.out.println(100);
System.out.println(100);
System.out.println(100);
System.out.println(100);
System.out.println(100);
变量:在程序运行过程中,其值可以发生改变的量。
变量的主要作用就是代表数据。既然要代表数据,一定要指明数据类型,以明确你代表的是什么类型的数据。
除此之外,变量要有一个名称,我们称之为变量名。
总结起来,变量具有三要素:数据类型 、变量名、变量值(变量值可以随着程序的运行发生改变)。
示例: int age = 20;
(1)变量的使用
变量的使用分为2步:
- 定义变量。语法格式: 数据类型 变量名 = 初始值;
- 使用变量
变量的取值:直接使用变量名就能取出里面的值。
int age = 20;
System.out.println(age);
修改变量的值:变量名 = 变量值;
int age = 20;//定义变量
age = 22;//这就是修改值
(2)变量名的命名规范
- 变量名只能由英文字母、数字、$和_构成。
- 变量名不能以数字开头。
- 变量名使用小驼峰方式命名,并且要见名知意。
- 变量名不能重名。
- 变量名不能是关键字。
- 变量名区分大小写。
(3)变量使用的注意事项
-
变量需要先定义,再使用。定义的时候必须给初始值。
一般:整数的初始值可以给0,小数的初始值可以给0或者0.0,布尔的初始值可以给false,字符的初始值可以给’0’或者0.
-
变量不能重复定义,即变量不能重名。
-
long类型的变量在赋值的时候,如果值过大,要在值后面加L(或l)。
-
给float类型变量赋值的时候,需要在值后面加上F(或f)
七、类型转换
类型转换指的是数据类型之间的相互转换。
在Java中类型转换分为:自动类型转换和强制类型转换。
(1)自动类型转换
把一个表示数据范围小的值或变量赋值给一个表示数据范围大的变量。
例如:long a = 100;
分析:常量100默认是int类型,占4个字节,变量a是long类型,占8个字节。8个字节的变量a能存储的下4个字节的100。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sYSl9Un0-1615184113515)(05_Java语言基础/自动类型转换.jpg)]
(2)强制类型转换
把一个表示数据范围大的数值或者变量赋值给另外一个数据范围小的变量。
强制类型转换的语法格式:目标数据类型变量名 = (目标数据类型)值(或变量)
例如: int a = (int)3.14;
分析:a是int类型,占4个字节。3.14默认是double类型,占8个字节。在转换的过程中,只保留整数部分,所以转换以后,a的值是3。上述代码可以实现转换,因为整数3没有超出int类型的范围。如果3.14的整数部分比较大,超出了int类型的范围,就会转换出一个错误的结果。
注意:虽然Java提供了强制类型转换,但是转换有风险,如果确定转换后不会出问题,再使用强制类型转换。
八、运算符
运算符:是对常量或者变量进行操作的符号。
(1)赋值运算符( =)
"="是Java语言中的赋值运算符。
这个运算符要求:"="左边必须是一个变量,右边是一个值(或者变量)。
示例:int age = 20;
上述的案例中,"="就起到一个赋值的作用,它把20赋值给了age变量。
再例如:age = 30;
在上一步中,age的值是20,经过age = 30以后,age的值变为30。"="将30赋值给了age。
赋值运算符的使用场景:
- 初始化变量。任何一个变量在用的时候都必须先定义再使用,定义的时候,必须有初始值。
- 改变变量的值。
(2)算术运算符(+、-、*、/、%)
运算符 | 作用 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法,注意:整数除以整数,结果扔是整数(即:舍弃小数部分) |
% | 求余数,余数的符号和被除数一致。 |
练习:
int a = 10, b = 8, c = 4;
int d = a / c + b; //d的值是多少?
int e = c * b / a; //e的值是多少?
(3)复合运算符(+=、-=、*=、/=、%=)
运算符 | 作用 | 说明 |
---|---|---|
+= | 加后赋值 | a+=b,将a+b的值赋值给a a = a + b |
-= | 减后赋值 | a-=b,将a-b的值赋值给a a = a - b |
*= | 乘后赋值 | a*=b,将a*b的值赋值给a a = a * b |
/= | 除后赋值 | a/=b,将a/b的值赋值给a a = a / b |
%= | 取余后赋值 | a%=b,将a%b的值赋值给a a = a % b |
//第一段代码
short a = 20;
a = a + 10;
//第二段代码
short a = 20;
a += 10;
上面2段代码有很大的差别!
a += 10; +=自带强制类型转换。复合运算符具有强制类型转换的功能。
(4)自增自减运算符(++、–)
自增、自减运算符只能作用于变量。
运算符 | 作用 | 说明 |
---|---|---|
++ | 自增 | 变量的值加1 |
– | 自减 | 变量的值减1 |
变量既可以放在++(或–)的前面,也可以放在++(或–)的后面
++在前,先自增。
++在后,后自增。
–在前,先自减。
–在后,后自减。
public static void main(String[] args) {
int a = 10;
int b = 10;
int c = ++a;
int d = b++;
System.out.println(c);//c是几?
System.out.println(d);//d是几?
}
(5)关系运算符(==、!=、>、>=、<、<=)
运算符 | 说明 |
---|---|
== | a==b,判断a和b的值是否相等,成立为true,不成立为false |
!= | a!=b,判断啊和b的值是否不相等,成立为true,不成立为false |
> | a > b,判断a是否大于b,成立为true,不成立为false |
>= | a>=b,判断a是否大于等于b,成立为true,不成立为false |
< | a < b,判断a是否小于b,成立为true,不成立为false |
<= | a<=b,判断a是否小于等于b,成立为true,不成立为false |
注意区别 = 和==,二者截然不同。
(6)逻辑运算符(&、|、!、^、&&、||)
运算符 | 作用 | 说明 |
---|---|---|
& | 逻辑与 | a&b,a和b都是true,结果为true,否则为false |
| | 逻辑或 | a|b,a和b都是false,结果为false,否则为true |
^ | 逻辑异或 | a^b,a和b结果不同,为true,结果相同为false |
! | 逻辑非 | !a,结果和a的结果相反 |
&& | 短路逻辑与 | 作用和&相同,但是有短路效果 |
|| | 短路逻辑或 | 作用和|相同,但是有短路效果 |
& 是并且的意思。需要同时满足条件,结果才是true,否则是false
| 是或者的意思。需要同时为false时,结果才是false,否则是true
^ 异或的意思。相异为true,相同为false
! 只有一个操作数,对操作数的结果取反
&&和||只是多了短路功能,其他与&和|一样。开发中几乎都使用&&和||,不使用&和|
(7) 三目运算符(? :)
格式:关系表达式 ? 表达式1 : 表达式2
作用:如果关系表达式的值为true,表达式1的值将作为整个式子的值。如果为false,表达式2的值将作为整个式子的值。
表达式:运算符和常量或变量组成的式子。
例如:a+b c > d 2 * e + f x + y > z
练习:
- 通过三目运算符,求2个数的最大值
- 通过三目运算符,求3个数的最大值
(8)一目、二目、三目
一目:运算符只有一个操作数。例如:++、–、!
二目:运算符有2个操作数。例如:+、-、*、/、%、|、&、^、&&、||、>、>=、<、<=、!=、==
三目:运算符有3个操作数。例如:? :
(9)运算符的优先级
原则:
- 一目运算符的优先级高于二目运算符、二目运算符的优先级高于三目运算符。
- 同目时, / 高于 + -, && 高于 ||*
- 可以通过加()的方式改变优先级。
(10)+、-运算符另外作用
+:可以作用于字符串,作用是字符串拼接。注意:+的两侧,至少有一个是字符串。
-:可以用作负号。
九、表达式和语句
1.表达式:由常量、变量以及运算符组成的式子。
关系表达式:用于比较数据(或表达式)大小的表达式。
逻辑表达式:由逻辑运算符连接的表达式。
2.语句:以分号结尾的表达式。或者以分号结尾的其他代码,例如输出语句
语句是程序的基本组成部分。
十、数据输入
在Java程序中,想要接受用户输入的数据,需要使用Scanner这个类。
Scanner是Java提供好的专门用于接受输入的类。
(1)Scanner使用的基本步骤
- 导包。-----import java.util.Scanner;
- 创建Scanner对象。------Scanner sc = new Scanner(System.in);
- 提取用户输入的数据。------int a = sc.nextInt();
技巧:可以使用Ctrl+Shift+O,让eclipse帮管理包,添加需要的包以及删除不需要的包。
在接受用户输入之前,最好进行友好的提示。
练习:
- 求2个数的最小值
- 求3个数的最小值
- 求3个数的中间值
(2)Scanner的深入理解
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();//此处输入100
String str = sc.nextLine();//此处输入hello
String str2 = sc.nextLine();//此处输入world
System.out.println(a);
System.out.println(str);
System.out.println(str2);
问题1:输入完hello之后,还能输入world吗?
问题2:str的值是什么?
问题3:str2的值是什么?