2021-07-10Java基础(重点)学习周总结

变量

什么是变量?

程序执行过程中,其值发生改变的量

变量的三要素

1)数据类型
2) 变量名
3)初始化值

格式

数据类型 变量名=初始化值;

数据类型

在java中,数据类型分为两大类型
1)基本数据类型:四类八种   (研究的都是基本类型)
        整数类型:默认int
                byte   字节类型   占1个字节(8个比特位)  取值范围:-128~127
                short  短整型     占2个字节
                int    整数       4个字节
                long   长整型     8个字节
                注意事项:long的初始化值末尾必须加L或者l
        浮点类型:默认类型double
                float   单精度     4个字节
                注意事项:float的初始化值末尾必须加F或者f
                double  双精度     8个字节
        字符类型:char              2个字节
                 初始化值:单引号括起来的单个内容
        布尔类型:boolean           1个字节          取值范围 true,flase
                 不参与类型转换
2)引用数据类型:数组,类,接口

定义变量的注意事项

1)在java语言中,同一个变量不能重复定义
2)一行写一个变量,分号结尾(代码规范风格)
3)一行也可以定义多个变量(在面试题/笔试题中)
4)变量要么直接初始化,要么先定义,但是必须在使用前对其初始化

隐式类型转换

    byte,short,char三者之间不进行相互转换,但是参与运算,优先转换为int类型(考点),long,float---double类型

强制类型转换

格式:目标数据类型  变量名  = (目标数据类型)(初始化/表达式) ;
注意:没有明确要求,尽量不用,因为可能损失精度!

举例: 

class DataTypeDemo4{
	
	public static void main(String[] args){
		
		//定义两个变量
		int a = 4 ;
		byte b = 3 ;
		
		//定义接受的结果类型
		//byte result = a  + b  ;  // b--> byte,----先提升int参与运算
					//结果为int类型的7	:4个字节
					//接受的类型:byte类型:占1个字节
					
		//目标数据类型  变量名  = (目标数据类型)(初始化/表达式) ;
		byte result = (byte)(a+b) ; 
		System.out.println("result:"+result) ; //byte类型的7
		
		//类型不匹配
		
		/*
		ataTypeDemo4.java:20: 错误: 不兼容的类型: 从int转换到byte可能会有损失
                byte result = a  + b  ;  // b--> byte,----先提升int参与运算
                                 ^
		1 个错误
		*/
		
	}
}

Java中的算术运算符

1)算术运算符
2)赋值运算符
3)关系(比较)运算符
4)逻辑运算符
5)位运算符
6)三元(三目)运算符

算术运算符

基本的算术运算符:+,-,*,/,%(模)
            /:默认取整
            %:求余数
举例:
class OperatorDemo{
	public static void main(String[] args){
		//定义两个变量
		int a = 3 ;
		int b = 4 ;
	
		//基本的运算
		System.out.println("+:"+(a+b)) ;
		System.out.println("-:"+(a-b)) ;
		System.out.println("*:"+(a*b)) ;
		System.out.println("/:"+(a*1.0/b)) ;
		System.out.println("%:"+(a%b)) ;
		
		//针对小数:在进行减法或者除法:可能永远近似某一个值,不会精确计算
		//计算机---计算(伪计算):要进行小数精确计算:jdk提供了
		//java.math包下 提供了类 BigDecimal:用来对小数进行精确计算!(常用类讲)
		System.out.println(1.0 / 0.45) ;
		
	}
}

扩展的算术运算符            

    ++或者是--
    
    场景1:        
        ++或者--单独使用
        无论++或者--在数据前面还是数据后:都是对当前数据本身自增1或者自减1    
    场景2:
        ++或者--参与运算使用    
        如果++或者--在数据的前面:需要先进行自增1或者自减1,然后再参与运算!
        如果++或者--在数据的后面:先进行运算,然后再进行自增1或者自减1

 赋值运算符

基本的赋值运算符: =
        将=号右边的数据赋值给左边类型的这个变量
        举例:
                int a = 10 ;    //将10赋值给int类型的变量a
                =不能写成"=="
                
                =是赋值
                ==:是比较运算符:比较两个数据相等
                
                    现在研究的是基本数据类型:==:比较数据值是否相等!
        

扩展的赋值运算符:+=,-=,*=,/=,%=
            将符号右边的数据和左边的数据相加,然后再赋值给左边的这个变量
                
                +=举例:
                    int a = 10 ;
                    a += 20 ;
                    类似于 a = a + 20 ;

比较(关系)运算符 

比较(关系)运算符:!=,<,<=,>=,>,==

class OperatorDemo{
	
	public static void main(String[] args){
		
		int a = 10 ;
		int b = 20 ;
		int c = 15 ;
		
		System.out.println(a>b) ; //false
		System.out.println(a<=b) ; //true
		System.out.println(a==b) ;//false
		System.out.println(a!=b) ;//true
		System.out.println("----------------------") ;
		
		//==不能写成=
		int m = 100 ;
		int n = 200 ;
		boolean flag = m == n ;
		//boolean flag = m = n ;//==不能写成=
		//将n的值赋值m,然后将m赋值flag
		System.out.println(flag) ;
		
	}
}

逻辑运算符

基本的逻辑运算符号

逻辑单与: &        并列关系(满足全部条件)
              有false,则false
                        
逻辑单或: |        或的关系:满足一个条件即可
              有true,则true
                        
逻辑异或: ^     相同则为false,不同则为true
                简单记忆:
                       男女关系
                            
                    男女 女男    true
                    男男  女女  false
逻辑非:   !     非true,则false;非false则true
              偶数个非是他本身
              开发中经常会使用逻辑判断
              举例:
                    用户登录的时候
                    需用if语句 逻辑判断
                    if(!(用户输入的用户名和数据库的用户名一致) || !(密码一致)){
                        //给用户提示:错误信息
                    }
&& || (扩展的逻辑运算符:逻辑双与和逻辑双或)

扩展的逻辑运算符

逻辑双与:&&
逻辑双或:||

逻辑单与&和逻辑双与&&有什么区别?
共同点:
    都是能够表述"并列"关系    
不同点:
    逻辑单与&:无论左边的表达式是true还是false,右边都要执行!
    逻辑双与&&:具有短路效果
             左边的表达式如果是false,则右边就不执行了!
    逻辑双||: 左边的表达式如果是true,则右边不执行了!
    
注意:只要有逻辑并列判断,优先采用的逻辑双与&&(或的关系判断:使用双或||)

三元运算符

格式:(表达式)? 1)执行true的结果:2)执行false的结果;
表达式:可以简单的也可以复杂的..
执行流程:
    判断表达式是否成立,如果成立则执行1)
    如果不成立,则执行2)
    
需求:
    已知两个变量a,b分别进行初始化,求出两个数据的最大值!
需求: 没有告诉数据类型:都是int数据类型
        定义三个变量,求三个变量的最大值
        定义两个变量,比较两个数据是否相等

键盘录入

之前的程序,都是将变量定义死,直接赋值一个值;
所以改进,使用键盘录入数据,让程序更加灵活!

jdk给我们提供类:
        java.util.Scanner :一个简单的文本扫描器
使用步骤
    1)导包: 在java语言中:只要不是java.lang包下的类都需要导入!
    位置:在class上面  
            import java.util.Scanner;
            
    2)固定格式: 创建键盘录入对象(文本扫描器对象)
            Scanner 对象名 = new Scanner(System.in) ;
            
    3)开始录入数据  :使用int类型举例
     Scanner类的功能
            public int nextInt():录入下一个int类型
            
      友情提示 "请您输入一个数据:"
        int 变量名 = 对象名.nextInt() ;
        
    4)使用变量    

举例:

import java.util.Scanner ;
class ScannerDemo{
	public static void main(String[] args){
		//2)创建键盘录入对象(文本扫描器对象)
		Scanner scanner = new Scanner(System.in) ;
		
		//3)提示并录入数据
		System.out.println("请您输入一个数据:") ;
		int x = scanner.nextInt() ;
		
		//4)使用这个数据
		System.out.println("您输入的数据是:"+x) ;

控制流程语句

格式一

if(表达式){

语句1;

}
 

格式二

if(表达式){
    语句1;
}else{
    语句2;
}

格式三

针对多种情况进行判断

if(表达式1){
    语句1;
}else if(表达式2){
    语句2;
...
...
...
}else{
    语句n;
}

例题

import java.util.Scanner ;
class ifDemo3{
	public static void main(String[] args){
		//创建Scanner键盘录入对象
		Scanner sc = new Scanner(System.in) ;
		

		//提示并录入数据
		System.out.println("您输入一个学生的成绩:") ;
		int socre = sc.nextInt() ;
		
		/*
			90 - 100 优秀
			80 - 90  较好
			70 - 80  良好
			60 - 70  及格
			60以下 不及格
			
		*/
		/*
		if(socre >=90 && socre <= 100){
			System.out.println("成绩优秀!") ;
		}else if(socre>=80 && socre<90){
			System.out.println("成绩较好!") ;
		}else if(socre>=70 && socre<80){
			System.out.println("成绩良好!") ;
		}else if(socre>=60 && socre<70){
			System.out.println("成绩合格") ;
		}else{
			System.out.println("成绩不及格") ;
		}
		*/
		
		/*
				程序: 需要测试:
				
					测试错误数据
					测试正确的数据
					测试边界数据
		*/
		if(socre >100 || socre <0){
			System.out.println("输入数据不合法...") ;
		}else if(socre >=90 && socre <= 100){
			System.out.println("成绩优秀!") ;
		}else if(socre>=80 && socre<90){
			System.out.println("成绩较好") ;
		}else if(socre>=70 && socre<80){
			System.out.println("成绩良好!");
		}else if(socre>=60 && socre<70){
			System.out.println("成绩及格") ;
		}else{
			System.out.println("不及格") ;
		}
		
	}

}

switch语句 

switch语句格式:
    switch(表达式){
    case 值1:
            语句1;
            break ;
    case 值2:
            语句2;
            break ;
            
    ...
    ...
    default:
            语句n;
            break ;
    }

注意事项:

1)case语句后面的值只能是常量,不能是变量(Java是一个强类型语言的:语法结构非常严谨)
                                javascript语言(前端):弱类型语言: switch语句的case后面既可以是常量,也可以是变量
2)书写switch语句的时候,case语句必须存在break语句,结束switch语句的!
                    如果没有书写break语句,会造成"case穿透!"现象
3)switch语句的结束条件
        a)遇见break结束
        b)程序默认执行末尾结束
4)default语句:可以在switch语句中的    任何位置
        如果在语句中,必须携带break; 否则case穿透
        如果在语句的末尾,break是可以省略的,不建议!

import java.util.Scanner ;
class SwitchDemo{
	public static void main(String[] args){
		//创建键盘录入对象
		Scanner sc = new Scanner(System.in) ;
		//提示并录入数据
		System.out.println("请您输入一个数据(1-7):") ;
		int week = sc.nextInt() ;
		switch(week){
		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 ;	
		case 6:
	    	System.out.println("星期六") ;
			break ;	
		case 7:
	    	System.out.println("星期日") ;
			break ;	
		default:
			System.out.println("非法数据!") ;
			break ;
		}
	}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值