Java 第三天

写在开头

 所有知识点都写下来实在是太多啦,而且有的知识点还是比较容易理解的,从今天开始我罗列出一天所学的知识点,比较容易理解的直接贴一个我觉得解释的比较全面的网址。
 嗯就这样!不是我懒!
 里面的知识点不可能都展现在标题,大家使用搜索功能(很快就可以修复好)搜自己想要了解的知识点。

运算符

基本算数运算符

自增自减运算 ⭐⭐⭐

 自增自减运算是java面试中百分百会考察的知识点。也是初学者不好理解的一点。

  • ++:表示自增,每次增加1;
  • –:表示自减,每次减少1;

自增或自减使用注意事项:

  1. ++或者–当变量不参与运算时,写在变量前或者变量后,效果一样,都是自增或者自减1
  2. 当变量参数运算时,++或–写在变量前,先进行变量自身的++或–,再进行运算++或–写在变量后,先使用变量值本身进行运算,运算完毕再进行变量自身的++或–

在代码里或许更好理解点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// ++ 或 -- 算数运算符
public class ZiZengZiJian
{
public static void main(String[] args)
{
int i = 9;
// 变量不参与运算,变量i的自增,+1 相当于i = i+1;
i++;
System.out.println(i);//10
// 变量i的自增
++i;
System.out.println(i);//11
/*

变量参与运算
++或--写在变量前,先进行变量自身的++或--,再进行运算
++或--写在变量后,先使用变量值本身进行运算,运算完毕再进行变量
*/
int y = ++i + 5;
System.out.println(y);//17

int i2 = 10;
int z = (i2--) + 7;
System.out.println(z);//17

//int z = (--i2) + 7;
//System.out.println(z);//16,16的结果是按照i2的值为10进行计算的
}
}

赋值运算符

赋值运算符: 主要是进行赋值以及运算

= : 表示把右边的数据,赋值给等号的左边
举例: int i = 9 ; 表示将9的数值赋值给变量i

+= :
举例: int i = 10;
i+=2;相当于: i= i+2;
1) 先进行运算i+2 2) 将i+2的结果,赋值给变量i

剩下的有makdown特殊字符,我放在代码块里:

1
2
3
4
-=  :  	int i = 10;i-=3; 相当于 i = i-3;
*= : int i = 10; i *=2; 相当于 i = i *2;
/= : int i = 10; i /=2; 相当于 i = i /2;
%= : int i = 10; i %=2; 相当于 i = i %2;

再来一串代码,更容易理解点:

1
2
3
4
5
6
7
8
9
10
11
12
// 赋值运算符
public class FuZhiYunSuan
{
public static void main(String[] args)
{
// 赋值
int i = 9;
// += 相当于: i= i+2; 1) 先进行运算i+2 2) 将i+2的结果,赋值给变量i
i+=2;
System.out.println(i);// 11
}
}

1.4 比较运算符

代码都写了,不放上去就是浪费,浪费是可耻的!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//比较运算符
public class BiJiaoYunSuan
{
public static void main(String[] args)
{
int i = 9;
int y = 10;
// 判断两个数值是否相等,先将等号右边的表示式计算结果赋值给b变量
boolean b = i == y;
System.out.println(b);// false
// 判断两个数值是否不相等
boolean b1 = i!=y;
System.out.println(b1);// true
/*

第一个类型: 10 < i boolean
第二个类型: boolean < 20 20是int类型,booleab无法与int类型进行比较
*/
//boolean b2 = 10 < i < 20 ; //错误,不能进行连续的比较,比较必须分开进行
//System.out.println(b2);
}
}

逻辑运算符

逻辑运算: 将表达式真假值判断做合理的逻辑结合
举例: 要求: 登录界面,客户姓名,客户密码,如果客户想要正确登录
条件: 客户姓名真的 并且 客户密码对的
说明: 逻辑运算符的结果,并不是一个数值,结果是boolean (true真 false假)

&

  • 相当于中文“并且”,即运算双方都需要为ture
  • 使用场景:用户名&密码,两者都需要满足ture时,才可以登录系统。两者有一个false或者都为false都不能完成登录系统。
  • ture & ture—–ture
    ture & false—-false
    false & ture—-false
    false $ fase—-false

|

  • 相当于中文“或者”,即运算双方有一个为ture就为ture
  • 使用场景:信息收集时候,要求填写手机号和家庭座机二者有一个即可。
  • true | true true
    true | false true
    false | true true
    false | false false

&&

  • 结果与& 完全相同

  • &&与&的不同:如果左边的表达式,能决定&&的返回值结果,那么右边的表达式不管是什么都不再执行,所以性能比&高

||

  • 结果与| 完全相同

  • ||与|的不同:如果左边的表达式,能决定||的返回值结果,那么右边的表达式不管是什么都不再执行,所以性能比|高

说明: 实际的开发场景中,基本上都使用 && 与 ||

^ ! 运算

放点代码理解下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//逻辑运算符
public class LuoJiPanDuan
{
public static void main(String[] args)
{
int x = 3;
int y = 4;

boolean b = x > y;// false
System.out.println(b);
boolean b1 = x <= y;// true
System.out.println(b1);
// 逻辑运算,与, false & true ,&两边的数据都为真,结果才是真
boolean b2 = b & b1 ;
System.out.println(b2);
// 逻辑运算,或,false | true ,|两边有任意一个为真,结果为真,否则为假
boolean b3 = b | b1 ;
System.out.println(b3);
// 逻辑运算,!,取反
boolean b4 = !b;// b本身是false
System.out.println(b4);// true
// & 两边的表达式都会进行运算
boolean b5 = false & ++y > 4;
System.out.println(y+"------"+b5);// 5-----false
// && ,如果左边的表达式为false,右边的表达式不进行计算
boolean b6 = false && (x++) == 3;
System.out.println(x+"------"+b6);// 3 -----false
}
}

三元运算符

表达式?表达式1:表达式2

  • 表达式:必须是boolean类型的表达式。
  • ?:问,前面的表达式的结果是ture还是false。
  • 表达式1:如果表达式的结果为ture,那么整个表达式的结果就为表达式1
  • 表达式2:如果表达式的结果为false,那么整个表达式的结果就为表达式2
  • 表达式1和表达式2的类型尽量一致。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Sanyuan
{
public static void main(String[] args) {
//小明的成绩,大于80分就买飞机,小于80,作业写100遍
int score = 84;
//三元运算符,结果为string。
String s =score>=80?"买飞机":"写100遍"
System.out.println(s);
//三元运算符,结果为int。
int i =score>=80?100:1000
System.out.println(i);
}


}

位移运算

位移运算:数据在内存中,可以通过位置的移动,来进行计算
底层:十进制数能转换成2进制数

位移的分类:

1
2
3
>>:右移,每次向右移动一位,可以让一个十进制数/2
<<:左移,每次向左移动一位,可以让一个十进制数*2
>>>:正数的向右移动一位,可以让一个十进制数/2

说明:

  1. 只能进行整数运算。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21

    public class C6
    {
    public static void main(String[] args)
    {
    int i = 10;
    //向左移动一位,原值*2
    i = i << 1 ;
    System.out.println(i); //20

    int x = 10;
    //向左移动一位,原值/2
    x = x >> 1 ;
    System.out.println(x); //5

    int y = 5;
    //向左移动二位,原值/2/2
    y = y >> 2 ;
    System.out.println(y); //1
    }
    }

引用数据类型 ⭐⭐⭐

数据类型的概述

  1. 基本数据类型,四类八种,比较简单,直接表达出数据属于那种具体类型
  2. 引用数据类型: 类(class),数组,接口
    举例: 类 Person 属性: 名字,年龄,眼睛,嘴 功能: 吃饭,睡觉,喝水
    引用: 指Person在内存中进行存储,记录的不仅仅是你的变量名,记录的是Person在内存中的地址

引用数据类型的定义

基本数据类型: 数据类型 变量名 = 变量值 ;
引用数据类型:
定义格式 :
举例:

Scanner类

Scanner类功能可以接收键盘输入的内容

  1. 需要先导包,确定,要使用的类,在哪个路径下,使用 import关键字, import java.util.Scanner;//改包在jdk根目录下有一个src.zip
  2. Scanner类对象的创建:
    数据类型 变量名 = new 数据类型();
    Scanner sc = new Scanner(System.in);
  3. 使用sc变量名. 方法名,这样可以使用Scanner中的具体方法(功能)
    Scanner类中的功能:
  • nextInt(); 接收键盘输入的一个整数,返回值的,int类型的整数
  • next(); 接收键盘输入的一个字符串,返回值也是String类型
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// 引用数据类型
// Scanner 在哪个路径下,Scanner是JDK写好的一个类,你可以直接拿来使用,但是有使用步骤
import java.util.Scanner;//1. 使用import关键字,进行Scanner类所在路径的一个导入动作
public class C7
{
// 2. 创建一个Scanner对象 : 数据类型 变量名 = new 数据类型();
public static void main(String[] args)
{

Scanner sc =new Scanner(System.in);
// 3. 使用sc变量名.方法名(),实现方法对应的功能
/*
Scanner类中的方法(功能)
1) nextInt(); 接收键盘输入的一个整数,返回值的,int类型的整数
*/
System.out.println("请输入一个整数:");

int x =sc.nextInt();

System.out.println("您输入的整数是:"+x);


// next(); 接收键盘输入的一个字符串,返回值的,int类型的字符串

System.out.println("请输入一个字符串:");

String s =sc.next();

System.out.println("您输入的字符串是:"+s);

}
}

接收键盘输入的两个整数求和:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.uil.Scanner;
public class C7
{
public static void main (String[] args)
{

Scanner sc = new Scanner( System.in);

System.out.println("请输入一个整数:");

int a =sc.nextInt();

System.out.println("请输入二个整数:");

int b = sc.nextInt();

int sum =a +b;
System.out.println("两数之和是:"+sum);

}
}

键盘录入一个整数,判断该数字的奇偶
例如,输出:该数字是25,是一个奇数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/*
键盘录入一个整数,判断该数字的奇偶
例如,输出:该数字是25,是一个奇数

*/
import java.util.Scanner;
public class GetQiOu
{
public static void main(String[] args)
{
/*
1. 需要一个整数,键盘录入(Scanner)
2. 判断奇偶
数 % 2 == 0 偶数
数 % 2 == 1 奇数
*/
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数:");
int x = sc.nextInt();

String s = x % 2 == 0 ? "偶数" : "奇数";

System.out.println("你输入的数为:"+s);
}
}

Random类

Random 类: 生成一个随机数,JDK写好的类,直接使用,使用步骤

  1. 导包,import java.util.Random;
  2. 创建对象, Random ran = new Random();
  3. ran.方法(),调用类中的功能
    方法介绍: ran.nextInt(10); 表示随机输出0-10之间的整数(包括0,不包括10,相当于0-9),
    返回值类型为int类型

Random 案例使用场景: 例如,双色球, 随机点名

生成随机数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.Random;
public class C9
{
public static void main (String[] args)

{
Random ran = new Random();

int x =ran.nextInt(11);

System.out.println("生成的随机数是:"+x);

}

}

3 流程控制语句 if (分支结构)

 我就不说了,和c语言差不多贴几个代码吧。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// if语句的第一种表达方式
public class IfDemo1
{
public static void main(String[] args)
{
int score = 80;
// if语句判断分数,小括号中需要boolean类型的表达式
// 小明考试成绩大于等于80分,那么妈妈给买飞机
if(score >= 80){
System.out.println("买飞机去");
}
/*
if(客户姓名对不对 && 客户密码对不对){
销售或者办业务
}
*/
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// if else语句 if语句的第二种表达方法
public class IfElseDemo
{
public static void main(String[] args)
{
int age = 20;
// if else 语法结构
if(age >= 18){
System.out.println("独立");
}else{
System.out.println("和妈妈一起住");
}

}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// if语句的第三种表达方式
import java.util.Scanner;
public class IfElseIfDemo
{
public static void main(String[] args)
{
//键盘输入任意一个整数,需要告知我,这个数是: 正数/负数/0
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数");
int x = sc.nextInt();
if( x < 0){
System.out.println("负数");

}else if ( x > 0 ){
System.out.println("正数");
}else if( x == 0){
System.out.println("0");
}else{
System.out.println("不是数");
}
}
}

晚安

 今天就到这里了,明天见,加油!

-------------本文结束感谢您的阅读-------------
0%