Java学习日记

发布时间 2023-03-26 23:15:08作者: s1mpLe丶Han

2023.3.26学习Java打卡

类型转换

不同类型数据先转化为同一类型,再运算:
#低--------------------→高
byte,short,char-→int-→long-→float-→double

例如:

//强制转换   高-→低
int a = 128;
byte b = (byte)i;
输出a=128,b=-128.
#因为存在内存溢出问题,byte范围从-128~127
    
//强制转换   低-→高
int a = 128;
double b = i;
输出a = 128,b = 128.0.

注意:

  • 布尔值不能进行转换
  • 不能把对象类型转换为不相干的类型
  • 高-→低需要强制转换,注意内存溢出、精度问题
  • 操作比较大的数字时,可以使用下划线( _ )分割

变量

  • Java变量是程序中最基本的存储单元,要素包括变量名,变量类型和作用域
  1. 作用域:

    类变量:static 变量名

    实例变量:在类内,从属于对象;若不初始化值,默认为0或0.0,布尔值默认false,除基本类型外其余默认值为null。

    局部变量:在方法中有用,必须声明和初始化值。

常量

注:初始化值后不会再改变;常量一般使用大写字符。

运算符

算数运算符:+ - * / % ++ --
赋值运算符:=
关系运算符:> < >= <= == != instanceof
逻辑运算符:&& || ! (与、或、非)
位运算符 :& | ^ ~ >> << >>>
条件运算符:? :
*拓展赋值运算符:+= -= = /=

位运算:

A = 0011 1100
b = 0000 1101
A & B = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
  ~ B = 1111 0010
//2*8=16  2*2*2*2 =  2<<3  左移三位
//0000 0010  2
//0001 0000  18
// << 相当于 *2   >> 相当于/2 
x ? y : z     
//若x==true,则结果为y,否则结果为z

Java流程控制

  • Scanner对象:通过Scanner类获得用户的输入。

    Scanner scanner = new Sacnner(System.in);
    

    使用Scanner类的next()与nextLine()方法获取输入的字符串。

    使用hasNext()与hasNextLine()判断是否还有输入的数据。

    • next()
      1. 读取到有效字符后才可以结束输入。
      2. 有效字符前的空白,此方法会自动去掉
      3. 输入有效字符后,后面的空白作为分隔符或结束符
      4. next()不能得到带空格的字符串
    • nextLine()
      1. 返回的是enter之前所有字符。
      2. 可以获得空白。

顺序结构

自上而下按顺序依次执行。

选择结构

  • if单选择结构

    if(布尔表达式){
        //布尔表达式为True后将要执行的语句
    }
    
  • if双选择结构

    if(布尔表达式){
        //布尔表达式为True后将要执行的语句
    }else{
        //布尔表达式为False后将要执行的语句
    }
    
  • if多选择结构

    if(布尔表达式1){
        //布尔表达式1为True后将要执行的语句
    }else if(布尔表达式2){
        //布尔表达式2为True后将要执行的语句
    }else if(布尔表达式3){
        //布尔表达式3为True后将要执行的语句
    }else{
        //以上布尔表达式都不为True后将要执行的语句
    }
    
  • if嵌套结构

    if(布尔表达式1){
        //布尔表达式1为True后将要执行的语句
        if(布尔表达式2){
            //布尔表达式2为True后将要执行的语句
    	}
    }
    
  • switch多选择结构

    switch(表达式){
        case xxx:
            //语句
            break;
        case xxx:
            //语句
            break;
        default:
            //语句
    }
    #case标签必须为字符串常量或字面量
    

循环结构

  • while循环

    while(布尔表达式){
        //循环内容
    }
    
  • do...while循环

    do{
        //代码语句
    }while(布尔表达式);
    

    注:对于while语句而言,若不满足条件,则根本无法进入循环。

    而do...while则会至少循环一次。

  • for循环

    for(初始值; 布尔表达式; 更新){
        //代码语句
    }
    

    注:初始值可以为空语句。布尔表达式也可以为空。更新也可以为空。

  • 增强for循环

    for(声明语句 : 表达式){
        //代码句子
    }
    

    注:

    声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值也与此时数组元素的值相等。

    表达式:表达式是要访问的数组名,或者是返回值为数组的方法。

  • break、continue

    • break:强行退出循环,不执行剩余语句。

    • continue:终止某次循环,即跳过本次循环体,接着下个循环体的判定。