JavaSE复习day1
胡家伟
1.代码格式
注释
单行注释 :通常用于解释方法内某单行代码的作用。
多行注释 :通常用于解释一段代码的作用。
文档注释 :通常用于生成 Java 开发文档。
//单行注释
/*
*多行注释
*
*/
标识符
标识符就是一个名字,我们对类、方法、变量之类取得名字就是标识符。
关键字
分类 | 关键字 | ||||||
---|---|---|---|---|---|---|---|
访问控制 | private | protected | public | ||||
类、方法和变量修饰符 | abstract | class | extends | final | implement | interface | native |
new | strictfp | static | synchronized | transient | volatile | enum | |
程序控制 | break | continue | return | while | do | if | else |
for | instanceof | switch | case | default | assert | ||
错误处理 | try | catch | throw | throws | finally | ||
包相关 | import | package | |||||
基本类型 | int | float | double | char | boolean | short | long |
byte | |||||||
变量引用 | super | this | void | ||||
保留字 | goto | const |
虽然true、false、null看起来是关键字但是实际上是字面值,也无法作为标识符来使用。
2.变量&数据类型
变量
成员变量与局部变量的区别?
- 语法形式 :从语法形式上看,成员变量是属于类的,而局部变量是在代码块或方法中定义的变量或是方法的参数;成员变量可以被
public
,private
,static
等修饰符所修饰,而局部变量不能被访问控制修饰符及static
所修饰;但是,成员变量和局部变量都能被final
所修饰。 - 存储方式 :从变量在内存中的存储方式来看,如果成员变量是使用
static
修饰的,那么这个成员变量是属于类的,如果没有使用static
修饰,这个成员变量是属于实例的。而对象存在于堆内存,局部变量则存在于栈内存。 - 生存时间 :从变量在内存中的生存时间上看,成员变量是对象的一部分,它随着对象的创建而存在,而局部变量随着方法的调用而自动生成,随着方法的调用结束而消亡。
- 默认值 :从变量是否有默认值来看,成员变量如果没有被赋初始值,则会自动以类型的默认值而赋值(一种情况例外:被
final
修饰的成员变量也必须显式地赋值),而局部变量则不会自动赋值。
静态变量有什么作用?
静态变量可以被类的所有实例共享。无论一个类创建了多少个对象,它们都共享同一份静态变量。
通常情况下,静态变量会被 final
关键字修饰成为常量。
二进制、八进制、十六进制表示方法
二进制 0b 0B
八进制 0
十六进制 0x 0X
数据类型
数据分为两类。
基本数据类型(值类型)
- 数值类型
- 整数类型
- byte
- short
- int
- long
- 小数类型
- float
- double
- 布尔类型
- boolean
- 字符类型
- char
- 整数类型
这 8 种基本数据类型的默认值以及所占空间的大小如下:
基本类型 | 位数 | 字节 | 默认值 | 取值范围 |
---|---|---|---|---|
byte |
8 | 1 | 0 | -128 ~ 127 |
short |
16 | 2 | 0 | -32768 ~ 32767 |
int |
32 | 4 | 0 | -2147483648 ~ 2147483647 |
long |
64 | 8 | 0L | -9223372036854775808 ~ 9223372036854775807 |
char |
16 | 2 | 'u0000' | 0 ~ 65535 |
float |
32 | 4 | 0f | 1.4E-45 ~ 3.4028235E38 |
double |
64 | 8 | 0d | 4.9E-324 ~ 1.7976931348623157E308 |
boolean |
1 | false | true、false |
3.4E38指3.4乘以10的38次方
3.5E-2值为0.035
一个字节是8个比特位 1byte=8bit 采用2进制表示
例如byte类型是8个比特位不考虑负数时最小值是00000000,最大值是11111111
转换为十进制就是0~255,考虑负数之后就是-128~127
引用数据类型
字面量
字面量就是由字母,数字等构成的字符串或者数值,她只能作为右值(等号右边的值)
或者说是用于表达源代码中一个固定值的表示法
例 int a=8 8就是右值 就是字面量
Unicode(统一码、万国码、单一码)
char a=99;
System.out.println(a);
输出:c
堆栈
局部变量 | 成员变量 | |
---|---|---|
基本数据类型 | 变量名和值都在方法栈 | 变量名和值在堆内存 |
引用数据类型 | 变量在方法栈,变量指向的对象在堆 | 变量名和变量名指向的对象都在堆 |
以上可知为什么引用数据类型叫做‘引用’。
3.运算符
表达式
表达式 = [操作数] [运算符] 计算单元
1.任何表达式都一定有一个结果
2.表达式类别有很多
算数运算符
+ - * / %五种
+还有一个作用,如果此运算符两端或者任何一段的内容是字符串或者字符类型,那么执行的结果将会是内容拼接。
int a=1;
String b="h";
System.out.println(a+b);
输出为:1h
赋值运算符
运算符 | 用途 | 使用示例 |
---|---|---|
= | 进行赋值 | 可以声明变量同时赋值或者先声明变量在赋值 |
+= | 赋值同时进行加法 | int i = 10; i += 20;//等于i = i + 20; |
-= | 赋值同时进行减法 | int i = 10; i -= 20;//等于i = i - 20; |
*= | 赋值同时进行乘法 | int i = 10; i *= 20;//等于i = i * 20; |
/= | 赋值同时进行除法 | int i = 10; i /= 2;//等于i = i / 2; |
%= | 赋值同时进行取模 | int i = 10; i %= 2;//等于i = i % 2; |
初始化
所谓初始化,只是一个概念,通常我们把一个崭新的变量第一次赋值的过程称之为初始化
int i;//声明了一个新的变量
i = 10;//这是i变量的第一次赋值,我们可以称之为初始化
int j = 20;//声明了一个新的变量并且直接赋值了,这种情况我们也可以称之为初始化
j = 2;//这是第二次赋值了,只能叫重复赋值,而不能称之为初始化。
比较运算符(关系运算符)
比较运算符表达式最终的结果是boolean类型值,也就是true或者false
运算符 | 用途 |
---|---|
> | 比较左面大于右面 |
< | 比较左面小于右面 |
== | 比较运算符两边的值是否相等,不能比较字符串类型的值(需要用equals) |
>= | 比较左面大于等于右面 |
<= | 比较左面小于等于右面 |
!= | 比较左面不等于右面 |
自增自减运算符
++ 和 -- 运算符可以放在变量之前,也可以放在变量之后,当运算符放在变量之前时(前缀),先自增/减,再赋值;当运算符放在变量之后时(后缀),先赋值,再自增/减。例如,当 b = ++a
时,先自增(自己增加 1),再赋值(赋值给 b);当 b = a++
时,先赋值(赋值给 b),再自增(自己增加 1)。也就是,++a 输出的是 a+1 的值,a++输出的是 a 值。用一句口诀就是:“符号在前就先加,符号在后就后加”
int a=9;
int b=9;
int c = a++;
int d = ++b;
System.out.println("a="+a);
System.out.println("b="+b);
System.out.println("c="+c);
System.out.println("d="+d);
输出结果:
a=10
b=10
c=9 //先赋值后
d=10 //先+1后赋值
逻辑运算符
运算符 | 含义 | 解释 |
---|---|---|
&& & |
与(AND) | 都真为真 |
|| | |
或(OR) | 一真即真 |
! | 非(NOT) | 返回操作数相反的布尔值 |
boolean a=true,b=false;
System.out.println(a && a);//ture
System.out.println(a && b);//false
System.out.println(b && b);//false
System.out.println(a || b);//true
System.out.println(b || b);//false
System.out.println(a || a);//true
System.out.println(!a);//false
System.out.println(!b);//true
&&、||为短路运算符,&、|为非短路运算符
例如boolean a = false, b = true
要判断AND时,使用&&。
System.out.println(a&&b)
左边的a已经是false不满足AND了就会直接结束运行,而使用&时a不满足也不会停止运行,会继续验证b是否符合。
int i = 10;
System.out.println(false && i++ < 20);
System.out.println(i);//10 短路 后面的i++没有运行
int j = 10;
System.out.println(false & j++ < 20);
System.out.println(j);//11 非短路 后面的i++运行了
三元运算符
语法
语法 | [条件语句] ? [表达式1] : [表达式2] |
---|---|
说明 | 三元运算符由三个部分构成,其中第一部分条件语句表达式结果必须是布尔类型。如果这个条件语句的表达式结果为真,则整个三元运算符表达式结果取问号后面的值(表达式1)的值;如果这个条件语句的表达式结果为假,则取冒号后面的值(表达式2的值)。 |
示例
看如下的两端代码,左侧的流程结构的代码可以直接用右边的三元运算符实现。
使用流程结构 | 使用三元运算符 |
---|---|
String result = ""; int i = 10; if(i % 2 == 0){ result = "i是一个偶数"; } else{ result = "i是一个奇数"; } |
int i = 10; String result = i % 2==0 ? "i是一个偶数" : "i是一个奇数"; |
运算符的优先级
()[] 优先级最高,= 优先级最低。
4.标识符命名规则&数据类型转换&转义字符
- Java对于变量、方法、类等要素命名的时候所使用的字符串称之为标识符。
- 简单地说只要是我们自己可以定义的名称都可以称之为标识符。
接收用户输入
Scanner input = new Scanner(System.in);
System.out.println("请输入你的名字");
String name = input.next();
System.out.println(name);
标识符命名规则
所谓的规则,指的是无论如何也需要遵守的内容,如果不这么做程序将会无法正常的运行。
- 标识符可以由26个英文字母、0-9、_(下划线)、$(美元符号)构成。
- 不可以由数字作为开头 。
- 不可使用关键字或者保留字,但是可以包含关键字或保留字。
- Java中严格区分大小写,但是对于长度没有限制。
- 标识符不可以包含空格。
标识符命名规范
在满足命名规则的基础上,行业中给出的一些明明建议,规范允许不被严格遵守。
- 包名:所有的字母均由小写字母构成。
- 类、接口名:多单词组成的时候所有的单词首字母大写。
- 变量、方法名:多单词组成时,首单词首字母小写,从第二个单词开始首字母大写。(驼峰命名法)
- 常量:所有字母均大写,多个单词组成的时候不同单词之间使用下划线作为分割。
数据类型转换
分为类型自动提升和强制转换。
类型自动提升
- 在进行赋值运算的场景中发生的类型自动提升。
byte num1 = 1;
short num2 = num1;
int num3 = num2;
- 在算数运算的场景中也会发生类型自动提升
byte
short
char
int
之间的算数计算结果会自动提升为int
类型
byte num4 = 10;
byte num5 = 1;
byte num6 = num4 - num3;//此时该语句报错 num4-num3提供的类型是int 而需要的是byte
如果有long
的参与,类型会自动提升为long
类型
如果有float
的参与,类型会自动提升为float
类型
如果有double
的参与,类型会自动提升为double
类型
double``float``long``int
优先级由高到低(自动往范围大了转)。
强制类型转换
人为干预的数据类型转换,例:
int a = 8;
byte b = (byte) a;
转义字符
转义字符的概念
Java中转义字符用反斜杠\
表示,作用是用来转义后面的一个字符,通常表示一个不可见的字符或者有特殊作用的字符。
常用的转义字符
\n
表示换行符,将后面的内容进行换行。
\r
表示回车符
System.out.println("HelloWorld");
System.out.println("Hello\rWorld");
输出
HelloWorld
World
回车符会定位到该行的开头,相当于把Hello覆盖了。
\t
表示制表符,相当于TAB
System.out.println("Hello\tWorld\t!");
输出
Hello World !
\b
表示退格符号,相当于键盘上的Backspace
System.out.println("HelloWorld\b");
输出
HelloWorl
其他的常用字符
\’ | 表示单引号字符 |
---|---|
\" | 表示双引号字符 |
\\ | **表示反斜杠字符 ** |
5.选择结构
IF
int a = 0;
if(a == 0){
System.out.println("a=0");
}
IF-ELSE
int b = 1;
if(b == 0){
System.out.println("b=0");
}
else{
System.out.println("b!=0");
}
多重IF
int grade = 80;
if(grade<60){
System.out.println("不及格");
}
else if(grade >=60 && grade <80){
System.out.println("及格");
}
else{
System.out.println("优秀");
}
SWITCH-CASE
语法:
switch(数据:byte、short、int、char、字符串、枚举)
{
case 数据:{//执行语句}; break;
case 数据:{//执行语句}; break;
……
default:{//执行语句} break;
}
switch()里面的数据和case后面的数据进行比较,相等时就会执行case后面的语句,如果该case没有添加break就会一直向下执行到break为止。
char grade = 'd';
switch(grade){
case 'A':
System.out.println("优秀");
break;
case 'B':
System.out.println("良好");
break;
case 'C':
System.out.println("及格");
break;
default:
System.out.println("缺考");
break;
}
6.循环结构
while循环(当型循环)
int i = 1;
while(i <= 3){
System.out.println("第"+i+"次循环");
i++;
}
输出
第1次循环
第2次循环
第3次循环
while循环特征:先判断再循环
do-while循环(直到型循环)
int i = 1;
do {
i++;
System.out.println("第"+i+"次循环");
}while (i <= 3);
输出
第2次循环
第3次循环
第4次循环
do-while循环特征:先执行再判断
for循环
for([内容1] ; [内容2] ; [内容3]){
[内容4]
}
- 内容1进入循环时执行,只执行一次。
- 每次执行循环体之前都会执行内容2的判断。
- 内容3每次执行完循环体之后执行。
- 内容2部分判断为真则执行内容4。
for(int i = 1;i <= 3;i ++){
System.out.println("第"+i+"次循环");
}
输出
第1次循环
第2次循环
第3次循环
循环的嵌套
for(int i = 1;i <= 9;i++){
for(int j = 1;j <= i;j++){
System.out.print(j+"*"+i+"="+i*j+" ");
}
System.out.println("\n");
}
输出
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
循环的控制
在循环结构中,当循环条件不满足或者循环次数达到要求时,循环会正常结束。但是,有时候可能需要在循环的过程中,当发生了某种条件之后 ,提前终止循环,这就需要用到下面几个关键词
continue
:指跳出当前的这一次循环,继续下一次循环。break
:指跳出整个循环体,继续执行循环下面的语句。
return
用于跳出所在方法,结束该方法的运行。return 一般有两种用法:
return;
:直接使用 return 结束方法执行,用于没有返回值函数的方法return value;
:return 一个特定值,用于有返回值函数的方法
练习:
boolean flag = false;
for (int i = 0; i <= 3; i++) {
if (i == 0) {
System.out.println("0");
} else if (i == 1) {
System.out.println("1");
continue;
} else if (i == 2) {
System.out.println("2");
flag = true;
} else if (i == 3) {
System.out.println("3");
break;
} else if (i == 4) {
System.out.println("4");
}
System.out.println("xixi");
}
if (flag) {
System.out.println("haha");
return;
}
System.out.println("heihei");
输出
0
xixi
1
2
xixi
3
haha
跨级控制
break:
当想让break跳出多层循环时,可以在那层循环外添加一个标识符,这样break时就能调到那层循环外了。
for(int m = 0; m < 5;m++) {
loop:
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if (j == 2) {
break loop;
}
}
}
}
//运行完j==2时,break loop使得结束了里面的两层循环于是最外层循环继续m++,m=1,i=0,j=0
continue:
想让continue跳出多层的循环时
for(int m = 0; m < 5;m++) {
loop:
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if (j == 2) {
continue loop;
}
}
}
}
//运行完j==2时,continue loop使得第二层的i=0循环结束了,i++,开始了下一次的循环,m=0,i=1,j=0
标签:复习,int,System,day1,运算符,println,JavaSE,变量,out
From: https://www.cnblogs.com/chiawei/p/16953985.html