2020寒假学习笔记 Java篇

常量和变量

Java中的关键字

Java 语言中有一些具有特殊用途的词被称为关键字。
Java 中常用关键字:
常用关键字
Java 关键字区分大小写的哦

Java标识符

用于给 Java 程序中变量、类、方法等命名的符号。
命名规则:

  1. 标识符可以由字母数字下划线_)、美元符$)组成,但不能包含 @、%、空格 等其它特殊字符,不能以数字 开头。

  2. 标识符不能是 Java 关键字和保留字( Java 预留的关键字,以后的升级版本中有可能作为关键字),但可以包含关键字和保留字。如:不可以使用 void 作为标识符,但是 Myvoid 可以

  3. 严格区分大小写。

  4. 标识符的命名最好能反映出其作用,做到见名知意。

变量

变量其实就是在内存中开辟的一块用于存储数据的空间。
我们通过三个元素描述变量:变量类型变量名以及变量值

(一) 分为以下几个步骤:

1.变量的声明:想要使用变量就要先声明变量,确定它的类型。
类型有基本类型byte->short->char->int->long->float->double,boolean
引用类型:除去基本类型以外其余都是引用类型,比如String,Integer,数组,list,对象等。
引用类型有四种方式:强引用,弱引用,软引用,虚引用。

强引用(Final Reference):默认引用类型,类似于Object obj=new Object()这样的引用。特点如下:
1、GC在任何时候都不会回收强引用,即便抛出了OOM错误。
2、可以直接访问对象。
3、可能存在导致内存泄露的情况.

弱引用(Weak
Reference):用来描述非必须的对象,它的生命周期是在产生至下一次GC工作之前,当GC工作时,无论内存情况如何都会对此类引用进行回收。被回收的此类应用会进入到注册引用队列。弱引用的相关实际案例可以参考WeakHashMap,后期补充

软引用(Soft Reference):软引用一般用来表达一些有用但是非必须的对象,GC会在内存不够的情况下进行回收

虚引用(Phantom Reference):最弱的一种引用类型,随时都有可能被GC回收,必须与引用队列一起使用,作用在于跟踪垃圾回收过程)

2、变量的 命名

1)、变量名由多单词组成时,第一个单词的首字母小写,其后单词的首字母大写,俗称骆驼式命名法(也称驼峰命名法),如 myAge

2)、变量命名时,尽量简短且能清楚的表达变量的作用,做到见名知意。如:定义变量名 stuName 保存“学生姓名”信息

3)符合java命名规范(首字母不能以数字开头,不可使用保留字,大小写敏感,可以有数字,字母,_和$组成)

3、变量的初始化:未被初始化的变量是无法使用的,初始化可以在变量声明时就初始化,也可以在首次使用之前进行初始化.

4、变量的使用:进行存取,计算等操作。

在定义变量后,要有一个变量的重新赋值。
使用“+”进行字符串和变量的拼接。

在这里插入图片描述

(二)变量使用的常见问题:

1.变量在使用的过程中,常见问题总结为如下几点:

  • 1)使用未经声明的变量。

  • 2)使用不符合Java标识符命名规则的变量。

  • 3)使用未经初始化的变量。

  • 4)变量的赋值与变量的类型不匹配

整数类型在使用的过程中,常见的问题有以下几点:

  • 1)整数直接量超出了整数的范围。

  • 2)关于整数的除法:两个整数相除,会舍弃小数的部分,结果也是整数。

  • 3)整数运算的溢出:两个整数进行运算时,其结果可能会超过整数的范围而溢出。

  • 4)表示long直接量,需要以 L 或 l 结尾。

浮点类型在使用的过程中,常见的问题有以下几点:

  • 1)浮点数的直接量为double类型。

  • 2)浮点数存在舍入误差问题。

char类型在使用的过程中,常见的问题有以下几点:

  • 1)字符类型存储中文。

  • 2)char类型的值可以作为整数类型直接使用。

数据类型

一. 1. float是单精度浮点数,内存分配4个字节,占32位,有效小数位6-7位
double是双精度浮点数,内存分配8个字节,占64位,有效小数位15位
2. java中默认声明的小数是double类型的,如double d=4.0
如果声明: float x = 4.0则会报错,需要如下写法:float x = 4.0f或者float x = (float)4.0
其中4.0f后面的f只是为了区别double,并不代表任何数字上的意义
3. 对编程人员而言,double 和 float 的区别是double精度高,但double消耗内存是float的两倍,且double的运算速度较float稍慢。

二.1.char表示字符,定义时用单引号,只能存储一个字符,如char c=‘x’;
而String表示字符串,定义时用双引号,可以存储一个或多个字符,如String name=“tom”;
2.char是基本数据类型,而String 是一个类,具有面向对象的特征,可以调用方法,如name.length()获取字符串的长度。

”boolean“类型的值只有两个,即:false和true;通常都用在条件判断中
boolean bl = true;
if(bl){ //代码分支}else{//另外一个代码分支};
解释:上面定义了一个波尔类型,它的值为真,下面的条件判断中会直接走进第一个”真“的分支。、
备注:以上方法只是一个简单的举例,实际应用中”boolean“的值需要大量的条件判断,最后获取到是”真“或者”假“,但实现思路都是一致的,当”真“的时候做某些操作,其他情况进行相应的操作。

在这里插入图片描述
在这里插入图片描述

Java数据类型转换

  1. 原则“表数范围小的可以向表数范围大的进行自动类型转换”。
    关于java自动类型转换有一个形象的比喻:将一个小容器的水倒入一个大容器没有问题,但是将一个大容器的水倒入一个小容器则会装不下,会溢出。
    java自动类型转换的规则为byte→short(char)→int→long→float→double。

  2. 强制类型转换,也称显式类型转换

语法:=()数据;

在要强制转换的数据前加小括号在写入要转换的类型如int x = (int)56.1;
如果想对浮点数进行舍入运算,就要使用Math.round int nx=(int)Math.round(x);
在进行强制类型转换时可能存在精度的丢失。

Java常量的应用

在这里插入图片描述

所谓常量,我们可以理解为是一种特殊的变量,它的值被设定后,在程序运行过程中不允许改变。
声明常量必须使用 final 关键字 ,标记效果等同于const.

语法:final 常量名 = 值;

public class HelloWorld{
public static void main(String[] args) {
常量名一般使用大写字符
char 用单引号,String 用双引号。

使用注释

Java 中注释有三种类型:单行注释、多行注释、文档注释
单行注释 // 开头 (快捷键 ctrl+/ )
多行注释:/* **/ (ctrl+shift+/ 多行注释取消:Crtl+Shif+)
文档注释:/
*/
在这里插入图片描述
我们可以通过 javadoc 命令从文档注释中提取内容,生成程序的 API 帮助文档。
javadoc生成API文档的步骤:
1.打开cmd运行窗口,进入编好的java文件路径(E:\eclipse-workspace\imooc\src\com\imooc),
输入javadoc -d doc HelloWorld.java
2.进入java文件夹,找到index.html并用浏览器打开,就自己生成了API文档

@author 标明开发该类模块的作者

@version 标明该类模块的版本

@see 相关主题

@param 对方法中参数的说明

@return 对方法返回值的说明

@exception 对方法可能抛出的异常进行说明

问题集1

1.Syatem起什么作用

System 是一个类,out是一个static PrintStream
对象。由于它是“静态”的,所以不需要我们创建任何东西,所以只需直接用它即可。println()的意思是“把我给你的东西打印到控制台,并用一个新行结束”。所以在任何Java
程序中,一旦要把某些内容打印到控制台,就可条件反射地写上System.out.println(“内容”)。

运算符

Java 语言中常用的运算符可分为如下几种:
Ø 算术运算符 如 + - * / % ++ –
Ø 赋值运算符 如 = += -+ *= /= %=
Ø 比较运算符 如 > < >= <= == !=
Ø 逻辑运算符 如 && || ! ^
Ø 条件运算符 如 ?:

System.out.println("两数之和为:"+sum)//“+”用于连接字符串和整型数

算术运算符▶

在这里插入图片描述
–i:i自减 1 后再参与其它运算。
++i:i自加 1 后再参与其它运算。
i++:i参与运算后,i的值再自增1;
i–:i参与运算后,i的值再自减1;
b=a++ //先将a的值赋给b,再a自增
b=++a //先a自增,再将a的值赋给b

看到题目要求平均年龄需要有小数。所以我是这么写的 double avg = sum / 4.0;
这样算出来,是真正的有小数的平均年龄,而正确答案是这样的 double avg = sum / 4; 这样的区别就是:
1、后者是在sum和4进行int运算后,结果依然为int类型,然后赋值给avg时进行了自动类型

自增和自减运算符只能用于操作变量,不能直接用于操作数值或常量!例如 5++ 、 8-- 等写法都是错误的

% 用来求余数,也称为”取模运算符“

赋值运算符

在这里插入图片描述

比较运算符

在这里插入图片描述
比较运算符用于判断两个数据的大小,例如:大于、等于、不等于。比较的结果是一个布尔值( true 或 false )。注意哦:

1、 > 、 < 、 >= 、 <= 只支持左右两边操作数是数值类型

2、 == 、 != 两边的操作数既可以是数值类型,也可以是引用类型

输出字符System.out.println(""+变量),而输出数值不用+

逻辑运算符

在这里插入图片描述
1.判断 - 它只有两种结果,一种为true真,一种为假false。

2.判断 - 一般写在()内。

3.判断 - 一般为表达式,a>0 && b<99,这种表达式只有两种结果。

4.判断 - 写完判断条件,电脑会自动判断表达式为真还是为假(在判断前,可以定义int a = 多少)。

5.判断 - 具体输出什么,根据System.out.println(); 括号内的值来决定。

(异或^:只有一个为真时才为真)

当使用逻辑运算符时,我们会遇到一种很有趣的“短路”现象。

譬如:( one > two ) && ( one < three ) 中,如果能确定左边 one > two 运行结果为 false , 则系统就认为已经没有必要执行右侧的 one < three 。

同理,在( one > two ) || ( one < three ) 中,如果能确定左边表达式的运行结果为 true , 则系统也同样会认为已经没有必要再进行右侧的 one < three 的执行了

条件运算符

条件运算符( ? : )也称为 “三元运算符”。
语法形式:布尔表达式 ? 表达式1 :表达式2
运算过程:如果布尔表达式的值为 true ,则返回 表达式1 的值,否则返回 表达式2 的值

String str=(8>5)?"8大于5":"8 <小于5";
System.out.println(str);//true,返回:8大于5

Java中运算符的优先级

在这里插入图片描述
ps:
在这里插入图片描述
小括号优先级最高,因此
1、 执行 a + 18 ,结果为 30
2、 执行( a + 18 ) % 4 取模,结果为 2
3、 执行 a * ( ( a + 18 ) % 4 ),结果为 24

注意4%5的取模运算问题!
a % p(或a mod p),表示a除以p的余数。
4除以5的商是0 余数是4
因此 4 mod 5 =4
%取模运算前一个数小于后一个数的话,求出来的模就是前一个数的值
例如4%5=4 还有7%9=7;

循环这里逻辑要理清,多花点时间理解和练习。

i%2== 0 因为求余数为0,则i为偶数(这里 ==是恒等于,而=为赋值,很多同学都很仔细)

i%2!= 0 余数不为0,则i为奇数

流程控制语句

条件语句

if

语法:
在这里插入图片描述
执行过程:
在这里插入图片描述
如果 if 条件成立时的执行语句只有一条,可以省略大括号,但如果执行语句有多条,那么大括号 不可或缺

if…else

语法:
在这里插入图片描述

执行过程:
在这里插入图片描述

多重 if

语法:

在这里插入图片描述

执行过程:

在这里插入图片描述

嵌套 if

语法:

在这里插入图片描述

执行过程:

在这里插入图片描述

switch

语法:
在这里插入图片描述
1.执行过程:当 switch 后表达式的值和 case 语句后的值相同时,从该位置开始向下执行,直到遇到 break 语句或者 switch 语句块结束;如果没有匹配的 case 语句则执行 default 块的代码。

在这里插入图片描述
switch的执行是按照从小到大的顺序执行的,最后执行default语句,
如果default后面带有break,那么程序就会正常跳出switch,否则,
程序会继续向后执行switch语句!也就是说,不管default放在什么
位置,它总是在最后一个处理,然后继续向下处理!
所以,最后的处理办法,避免出现以外结果的最好办法就是每一个case
以及default语句都要加一个break!

2、switch 后面小括号中表达式的值必须是整型或字符型

3、 case 后面的值可以是常量数值,如 1、2;也可以是一个常量表达式,如 2+2 ;但不能是变量或带有变量的表达式,如 a * 2

4、 case 匹配后,执行匹配块里的程序代码,如果没有遇见 break 会继续执行下一个的 case 块的内容,直到遇到 break 语句或者 switch 语句块结束 如
在这里插入图片描述
5. 可以把功能相同的 case 语句合并起来,如

在这里插入图片描述

6、 default 块可以出现在任意位置,也可以省略

7、 char today='日';

记得这个变量是char类型的;用的是单引号;

所以下面case后面的字符也必须是char类型的;

需要用单引号括起来;不能用双引号不然会报错;

同样的,如果定义的是

String today = "日"

这样的话下面的case后面的字符也必须是用双引号,

否则会报错;

至于会出线这样的情况,原因大概是因为变量的类型;

用单引号的类型switch case会默认是char类型的;

用双引号的类型switch case会默认是String类型的;

因为类型不用,所以识别不到对应的case后字符;自然会报错~

循环语句

while

语法:
在这里插入图片描述
执行过程:

< 1 >、 判断 while 后面的条件是否成立( true / false )

< 2 >、 当条件成立时,执行循环内的操作代码 ,然后重复执行< 1 >、< 2 >, 直到循环条件不成立为止

特点:先判断,后执行

do…while

语法:
在这里插入图片描述
执行过程:

<1>、 先执行一遍循环操作,然后判断循环条件是否成立

<2>、 如果条件成立,继续执行< 1 > 、< 2 >,直到循环条件不成立为止

特点: 先执行,后判断

由此可见,do…while 语句保证循环至少被执行一次!

for

语法:

在这里插入图片描述

执行过程:

<1>、 执行循环变量初始化部分,设置循环的初始状态,此部分在整个循环中只执行一次

<2>、 进行循环条件的判断,如果条件为 true ,则执行循环体内代码;如果为 false ,则直接退出循环

<3>、 执行循环变量变化部分,改变循环变量的值,以便进行下一次条件判断

<4>、 依次重新执行< 2 >、< 3 >、< 4 >,直到退出循环

特点:相比 while 和 do…while 语句结构更加简洁易读
细节:

1、 for 关键字后面括号中的三个表达式必须用 “;” 隔开,三个表达式都可以省略,但 “;” 不能省略。

a. 省略“循环变量初始化”,可以在 for 语句之前由赋值语句进行变量初始化操作,如:

在这里插入图片描述

b. 省略“循环条件”,可能会造成循环将一直执行下去,也就是我们常说的“死循环”现象,如:

在这里插入图片描述

在编程过程中要避免“死循环”的出现,因此,对于上面的代码可以在循环体中使用 break 强制跳出循环(关于 break 的用法会在后面介绍)。

c. 省略“循环变量变化”,可以在循环体中进行循环变量的变化,如:

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200218165128124.png
2、 for 循环变量初始化和循环变量变化部分,可以是使用 “,” 同时初始化或改变多个循环变量的值,如:

在这里插入图片描述

代码中,初始化变量部分同时对两个变量 i 和 j 赋初值,循环变量变化部分也同时对两个变量进行变化,运行结果:在这里插入图片描述

3、 循环条件部分可以使用逻辑运算符组合的表达式,表示复杂判断条件,但一定注意运算的优先级,如:
在这里插入图片描述

代码中,必须同时满足变量 i 小于 10 ,并且 i 不等于 5 时才会进行循环,输出变量 i 的值。

增强型for循环

• 又叫foreach循环
• foreach循环应用:

int[] arr={1,2,3,4,5};
 for(int n:arr)
 System.out.println(n);
多重循环

循环体中包含循环语句的结构称为多重循环。三种循环语句可以自身嵌套,也可以相互嵌套,最常见的就是二重循环。在二重循环中,外层循环每执行一次,内层循环要执行一圈。

如下所示:
在这里插入图片描述

循环跳转

continue

在这里插入图片描述

break
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值