javaSE基础语法

JAVA 基础语法

一、java注释,标识符,关键字

1.1 注释

1.1.1 用法
  • 对源代码的解释说明,不参与程序编译
  • 做代码删减的调试
1.1.2 分类
  • 单行注释 //注释内容

  • 多行注释 /* 注释内容 */

  • 文档注释

    /**

    *javaDoc生成说明文档

    */

1.2 标识符

1.2.1 概念

用来定义类,变量,包,方法,接口等的命名标识,目的是有一个名字

1.2.2 标识符的组成
  • 英文的大写字母a-z A-Z
  • 数字0-9
  • 符号 _ 与 $
1.2.3 命名规则
  • 不能以数字开头
  • 不可以使用关键字
  • 严格区分大小写
  • 驼峰命名法
  • 定义类(首字母大写,驼峰原则) 定义包(全小写) 定义方法(首字母小写,驼峰原则) 常量(全大写,加下划线 使用final修饰 不能重写赋值
1.2.4 深入变量

变量的语法定义:

数据类型 变量名 = 值;

根据位置不同,分为两大类:

  1. 成员变量(全局变量)
    • 类成员变量(类名.字段名调用)
      • 生命周期:从类加载到程序结束
      • 使用static修饰的,直接定义到类里面的
    • 实例成员变量
      • 声明周期:从创建对象开始到GC垃圾回收器回收垃圾结束
      • 直接定义到类里面
  2. 局部变量
    • 生命周期:从变量定义开始,到最近的花括号结束
    • 方法内部的变量
    • 参数列表
    • 代码块里面的变量
  3. 什么时候使用成员变量,什么时候使用全局变量?
    • 考虑变量的生存时间(影响内存的开销)
    • 能减少作用域都减少(减少内存开销)
    • 定义工具类是 (static 使用起来比较方便) 成员变量封装好,利于我们方法使用

1.3 关键字列表

1.3.1 关键字

请添加图片描述

1.3.2 保留字

请添加图片描述

1.3.3 特殊直接量

请添加图片描述

二、数据类型

2.1 八种基本数据类型

基本数据类型存储在栈内存中

四类八种字节数数据范围
整型byte1-128-127
short2-32768~32767
int4-2147483648~2147483648
long8-263~263-1
浮点型float(f,F)4-3.403E–3.403E
double(d,D)8
字符型char2‘a’,‘A’,‘1’
布尔型boolean1true,false

注意:

  • float浮点数 在赋值时,必须加后缀f或F

  • 不要比较float和double类型

    float f=3.55f;
    double d=3.55;
    System.out.println(f);
    System.out.println(d);
    System.out.println(f==d);//false
    

2.2 引用数据类型

数组,类,接口被称为引用数据类型,共同特点是,他们的字面值并不是一个“值”而是一段地址。

引用数据类型存储在堆内存中

2.3 数据类型转换

自动转换:小的数据类型向大的数据类型转换,或者整数类型转换成浮点数类型,都是可以实现自动转换的

强制转换: 大的数据类型向小的数据类型转换,或者浮点数要转换成整数,需要使用强制转换。要在转换类型加括号,如果是浮点数转整数,直接去掉小数点,只保留整数(不考虑四舍五入情况),考虑精度丢失问题

byte b = (byte)300;

三、运算符

3.1 算术运算符

  1. 运算符用来计算数据的,数据可以是常量,也可以是变量,被我们运算符操作的数,我们称之为操作数

  2. 算术运算符+、-、*、/、%、++、–

    运算符运算规则例子结果
    +正号+1010
    +加法10+1222
    +连接符“名字:”+“上云”名字:上云
    -负号-10-10
    -减法20 - 1010
    *乘法10*220
    /6/3(5/2)2
    %取模5%21
    ++自增int a = 1;a++/++a;2
    自减int b = 2; b–/–b;1

    注意:

    • 前置++ 先+1 后运算(后做操作),后置++ 先操作后+1;
    • 前置-- 变量先-1,后操作,后置-- 先操作,变量后-1;

3.2 赋值运算符

赋值运算符,用来为变量赋值的。=、+=、-=、*=、/=、%=

运算符运算规则例子结果
=赋值符号int a = 10;10
+=加后赋值int a = 10; a+=2;(a = a+2)12
-=减后赋值int a = 10; a-=2;8
*=乘后赋值int a = 10;a*=2;20
/=除后赋值int a = 10;a/=5;2
%=取模后赋值int a = 10;a%=3;1

3.3 关系运算符

关系运算符又叫比较运算符,用来判断两个操作数大小关系,以及是否相等,结果是我们boolean 类型,true false

运算符运算规则例子结果
>大于5 > 3true
>=大于或者等于5>=5true
<小于5<3false
<=小于等于3<=4true
==等于3==3true
!=不等于3!=4true

注意:赋值运算的 = 和关系运算符的 == 是有区别的,= 是做赋值, == 是做判断比较。

int a = 5;
int b = 10;
System.out.println( a == b);
System.out.println(a = b);

3.4 逻辑运算符

逻辑运算符,用与 boolean 类型的值进行运算比较的。最终结果 true 或者是 false(按住 shift + 对应符号)

运算符运算规则例子结果
&与(两者为真)true & falsefalse
|或(有一个真即为真)true | falsetrue
非(取反)!truefalse
^异或(两者不同即为真)true ^ falsetrue
&&短路与false && truefalse
||短路或true || falsetrue
^异或做二进制运算二进制无进位相加

& | 与 && || 的区别

  • 逻辑与& 逻辑或 | 两边都要判断,&两边都为真的时候结果为真,| 只要有一边为真结果就为真

  • &&(短路与) ||(短路或) 只判断一边,&& 左边为false右边不计算,||左边为true 右边不计算

逻辑异或运算 A^B: 使用^进行运算,只要两边相同,返回false,两边不同,返回true

如果要求右侧表达式,不管在什么情况下,都要计算到,只能使用逻辑与和逻辑或运算,不能使用短路 与和短路或运算

3.5 条件运算符(三目运算)

boolean ? 值1:值2;

true? “你好” : “不好”;

3.6 位运算符

当你使用数字操作位运算符时,是使用二进制操作的。

位运算符(1=true,0=false):

  • &(与) 1&1=1,1&0=0 使用&符号,两边同是为1,才为1,不然为0

  • |(或)1|1=1,1|0=1,0|0=0 使用|符号,两边有一边为1,则运算结果为1,否则为0

  • ^(异或) 11=0,10=1,0^0=0 使用^符号,两边相同,则结果为0,两边不同,则结果为1

  • 〜(取反) 1=0,0=1(二进制元素位) 使用~符号,按位取反,如果是0,则取值为1,如果是1,则取值为

    0000 0001
    1111 1110
    
  • << (左移)左移一位相当于乘以2,右移一位相当于除以2

    0000 0001
        <<2
    0000 0100
        
        >>1 右移
    0000 0010
        >>1
    0000 0001
    
    
  • 无符号移位

    无符号右移位运算:

    使用>>>符号表示,不考虑正负数的问题

    正数移动和右移位相同

    负数移动不考虑最左侧负号的问题,意义不大

3.7 运算符优先级

请添加图片描述

四、java 条件语句与循环结构

4.1 Java 条件语句 - if…else

4.1.1 if 单分支
if (boolean){
    //如果条件是true执行的代码块
}
/**
 * 需求:考试得了100,奖励一部手机
 */
4.1.2 if…else… 结构
if (boolean){
    //如果条件是true执行的代码块
} else {
    //如果条件是false执行的代码
}
/**
 * 需求:考试得了100,奖励一部手机;否则作业翻倍
 */
4.1.3 if…else if…else if …else 多分支结构
if(boolean){
    //语句块1
} else if(boolean) {
    //语句块2
} else if(boolean) {
    //语句块3
} else if(boolean) {
    //语句块4
} else {
    //都不满足执行的代码块
}
/**
 * 需求:考90份以上等级A,[80 - 90) B;[70 - 80)c; [0 - 70)d;
 */

4.2 Java switch case 语句

4.2.1 语法

switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。

switch(expression){
    case value :
       //语句
       break; //可选
    case value :
       //语句
       break; //可选
    case value :
       //语句
       break; //可选
    //你可以有任意数量的case语句
    default : //可选
       //语句    case 值中没有匹配到执行default语句块
}
/**
 * 需求: 打印星期 1 -7 
 */

  • value的值必须和表达式声明的类型一致,并且不能重复
  • switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句。
  • switch case 执行时,一定会先进行匹配,匹配成功返回当前 case 的值,再根据是否有 break,判断是否继续输出,或是跳出判断。

4.3 java 循环结构

4.3.1 while 循环

当条件为true时,此时while循环为死循环,需要添加循环结束条件(break)

while(boolean) {
    //代码块
}
/**
 *需求1: 播放音乐100次
 *需求2:  定义一个变量从0开始,当变量小于5的时候,计算变量之间的和
 */
4.3.2 do…while 循环

先执行一次语句块,再判断条件是否满足,满足则继续执行循环,不满足则结束循环

do {
	//代码块
}while(boolean)
4.3.3 for 循环
for(表达式1;表达式2;表达式3){
    //语句块
}

/**
 * 执行流程
 * 表达式1 -> 表达式2 —> 语句块 —> 表达式3 —> 表达式2 -> 语句块 -> ...
 */

死循环

for(;;){
    //循环体
}

for循环嵌套

特点:外层循环执行一次,里面全部执行完,再继续执行外层的循环

for(表达式1;表达式2;表达式3){
    //语句块
    for(表达式1;表达式2;表达式3){
    	//语句块
	}
}

增强for循环

for(声明语句 : 表达式)  //(表达式声明类型  临时变量  : 迭代量)
{
   //代码句子
}

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

表达式:表达式是要访问的数组名,或者是返回值为数组的方法。
    
 public static void main(String[] args){
      int [] numbers = {10, 20, 30, 40, 50};
 
      for(int x : numbers ){
         System.out.print( x );
         System.out.print(",");
      }
      System.out.print("\n");
      String [] names ={"James", "Larry", "Tom", "Lacy"};
      for( String name : names ) {
         System.out.print( name );
         System.out.print(",");
      }
   }

五、break 与 continue 关键字

5.1 break 关键字

break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。结束循环的执行

break 跳出最里层的循环,并且继续执行该循环下面的语句(跳出循环结构)。

 public static void main(String[] args) {
      int [] numbers = {10, 20, 30, 40, 50};
 
      for(int x : numbers ) {
         // x 等于 30 时跳出循环
         if( x == 30 ) {
            break;
         }
         System.out.print( x );
         System.out.print("\n");
      }
   }

break标记语法

 public static void main(String[] args) {
        a:for(int i=0;i<3;i++){
            System.out.println("外层循环"+i+"执行");
            for (int j=0;j<3;j++){
                System.out.println("内层循环"+j+"执行");
                break a;//break的标签语法   含义结束a标签循环
            }
        }
    }

5.2 continue 关键字

  1. 终止本次循环,继续执行下一循环
    • 需求:对1-100内的奇数求和

continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。

在 for 循环中,continue 语句使程序立即跳转到更新语句。

在 while 或者 do…while 循环中,程序立即跳转到布尔表达式的判断语句。

public static void main(String[] args) {
      int [] numbers = {10, 20, 30, 40, 50};
 
      for(int x : numbers ) {
         if( x == 30 ) {
        continue;
         }
         System.out.print( x );
         System.out.print("\n");
      }
   }

六、数组

6.1 数组的定义

  1. 数组的概念

    是一种容器。是一组相同类型的数据的组合,将这一组数据做统一管理。

    数组是一种引用数据类型。在数组中,可以存储基本数据类型,也可以存储引用类型 引用类型:类、String、数组、接口、枚举、注解

    方法中的变量,如果是基本数据类型,存储在栈内存中 如果是引用类型,内容存储在堆内存中,在栈内存中,有一个变量指向堆内存地址(引用)

  2. 动态定义数组

    //数组的声明
    int[]   nums;
    
    //	数据类型[]   数组名称  =  new  数据类型[元素个数];
    int[]   nums = new 	int[10];
    
  3. 静态定义数组 (数组初始化的时候,就已经确定各索引元素的值)

    //方式1 
    数据类型[]  数组名称  = new  数据类型[]{数据1,数据2,数据3};
    
    //方式2
    数据类型[]   数组名称  = {数据1,数据2,数据3};
    
  4. 赋值,获取值

    //给元素赋值
    数组名称[索引] =;   //索引从0开始
    
    //取值
    数组类型  变量名 = 数组名称[索引];
    
  5. 数组的遍历

    //for循环,快捷键fori
    for(int i = 0;i < arr.length;i++){
        
    }
    
    //forEach遍历 (底层使用for循环)
    //快捷键:数组名称.iter
    for (数据类型  变量名 :数组名称){
        
    }
    
    //倒序遍历  快捷键forr
    for(int i = arr.length; i > 0; i--){
        
    }
    
  6. 数组可能产生的异常

    数组下标越界异常

    java.lang.ArrayIndexOutOfBoundsException

    数组元素长度定义为负数

    java.lang.NegativeArraySizeException

    空指针异常

    java.lang.NullPointerException

6.2 数组的优缺点

  1. 特点:
    • 数组元素类型必须一致(char有ASCII码表对应)
    • 数组元素连续,空间大小一致,并且内存地址连续,呈线性结构
    • 数组长度固定后不可改变
    • 数组不仅可以存储基本数据类型也可以存储引用数据类型,数组本身就是引用数据类型
  2. 优点
    • 根据索引去获取访问元素(快)
    • 能存储较多的数据
  3. 缺点
    • 数组的长度固定,不可改变(超过容量增加数组元素时,只能用新数组代替)
    • 只能存储一种数据类型
    • 删除很慢,根据内容找索引很慢

6.3 数组的排序

  1. 选择排序

    public static void main(String[] args) {
        int[] x = {15, 7, 12, 2, 8};//5
        for (int z=0;z<x.length-1;z++){//控制循环几轮
            int minIndex = z;//认为第一个下标的数字是最小的
            for (int i = z+1; i < x.length; i++) {
                if (x[i] < x[minIndex]) {
                minIndex=i;//最小值的下标放在minIndex
                }
        	}
            //交换处理
            //每一轮,只做一次交换处理
            if (minIndex!=z){
                int tmp=x[z];
                x[z]=x[minIndex];
                x[minIndex]=tmp;
            }
            System.out.println("第"+(z+1)+"轮结束:");
            for (int a:x){
            	System.out.print(a+"\t");
            }
            	System.out.println();
            }
        }

    请添加图片描述

  2. 冒泡排序

    public static void main(String[] args) {
        int[] x = {15, 57, 12, 22, 8, 16};//
        for (int i =0; i < x.length-1; i++) {//循环轮次 0 1 2 3 4
            for (int j=0;j<x.length-1-i;j++){//内循环越来执行的次数越少
                if (x[j]>x[j+1]){
                    int t=x[j];
                    x[j]=x[j+1];
                    x[j+1]=t;
                }
            }
        }
        for (int i : x) {
        System.out.print(i+"\t");
        }
    }
    

请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小郑在努力ing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值