JAVA基础整理(一):基本语法

记录JAVA基础,包括关键字/变量/运算符/流程控制部分知识点。


该系列文章仅供自己复习使用,记录学习过程中遇到的值得注意的问题,并非记录全部知识点细节。


前言

没有记录标识符的命名规范,全靠多写去形成习惯


基于java8进行学习的,后续要根据版本新特性进行补充修改

一.变量的使用

包含JAVA语法中变量的相关知识重点。

1.变量的分类

1-1.按数据类型分类

首先,数据类型分为:基本数据类型(primitive type)和引用数据类型(reference type)。

基本数据类型包含:数值型(byte,short,int,long,float,double,char,boolean)。

引用数据类型包含:(class),接口(interface),数组([ ])。

需要注意:字符串String属于引用数据类型中的class,而非基本数据类型。

需要记住:byte(1字节 = 8bit)/ short(2字节)/ int(4字节)/ long(8字节)/ float(4字节)/ double(8字节)/ char(1字符 = 2字节)。

1-2.按声明位置分类

分为:成员变量局部变量

成员变量分为:实例变量(无static)和类变量(有static)。

局部变量分为:形参/方法局部变量/代码块局部变量。

需要注意:变量先声明后使用,都定义在其作用域内,离开作用域即失效。

2.基本数据类型的运算规则

涉及到除布尔型的另外七种基本数据类型。

2-1.自动类型转换

规则:byte 、char 、short --> int --> long --> float --> double

容量小的变量,与容量大的变量运算时,结果会自动提升为容量大的数据类型。当byte,char,short三种类型的变量做运算时,结果为int型,例如char型的a + short 型的10 = 107。

2-2.强制类型转换

可以理解为自动类型转换的逆运算,需要使用强转符()。强制类型转换可能导致精度损失,要谨慎使用。具体原理需要去理解计算机存储数据时使用的原码反码补码等知识。

    @Test//测试强制转换造成精度损失
    public void Test0() {
        long x = 1000000000000000l;
        int y = (int)x;
        System.out.println("x = " + x);//x = 1000000000000000l
        System.out.println("y = " + y);//y = -1530494976
    }

2-3.String与基本数据类型的运算

String可以与8种基本数据类型变量进行运算,且只能是连接运算,使用“+”连接,运算后的结果仍为String类型,要避免对String类型数据使用强转符,因为String并不是基本数据类型。

String s1 = "123";
int i = (int)s1;//编译错误,对String的类型转换需要用到包装类的知识点
int i= Integer.parseInt(s1);//调用包装类方法将String转换为int型

包装类知识点会在后续文章中记录。

二、关键字与标识符

1.定义与意义

关键字就是已经被用作专门用途的字符串,标识符就是所有可以自己起名字的那些名称。所以命名标识符时要避开关键字。

2.关键字都有什么

参见尚硅谷宋红康老师“30天掌握java基础”中的笔记如下图:
在这里插入图片描述
在这里插入图片描述
除此之外还有两个保留字:goto,const,后续版本可能会作为关键字使用,所以也要避免使用他们作为标识符。

3.标识符命名规则

不遵守以下命名规则,无法通过编译:
①只能由 英文字母 / 数字 / 下划线“_” / $ 组成;
②不能以数字开头;
③不能使用关键字保留字,但是可以包含他们;
④严格区分大小写,长度无限制;
⑤不能有空格。

三、运算符

1.运算符概览

算数运算符:加减乘除(±*/),取余(%),前后++,前后–

赋值运算符:=,+=,-=,*=,/=,%=

比较运算符:==,!=,>,<,>=,<=,instanceof

逻辑运算符:&,&&,|,||,!,^

位运算符:>>,<<,>>>,&,|,^,~

三元运算符:条件表达式?表达式1:表达式2

2.部分运算符细节讲解

2-1.算数运算符

%:取余运算,结果的符号和被模数符号相同,经常用于判断能否除尽。

    @Test//测试取余运算结果的符号正负
    public void Test1(){
        int m = -16;
        int n  = 5;
        System.out.println("m % n = " + m % n);//m % n = -1
    }

前++/- -:先自增/自减,再参与运算;
后++/- -:先运算,之后进行自增/自减。

    @Test//测试前后++/--的运算过程
    public void Test2(){
        int x = 5;
        int y = 10;
        int a = x++;
        int b = --y;
        System.out.println("x = " + x);     //x = 6
        System.out.println("y = " + y);     //y = 9
        System.out.println("a = x++ =" + a);//a = x++ =5
        System.out.println("b = --y =" + b);//b = --y =9
    }

2-2.逻辑运算符

区分&与&&,|与||:&与|会强制运算符号右边的表达式,无论符号左边的结果是否决定最终结果。&&与||会在符号左边结果已决定最终结果时,不再进行右边的运算。开发时更推荐使用&&和||。

    @Test//测试&与&&(|与||同理)
    public void Test3(){
        int a = 5,b = 10;
        if(a > 0 & --a > 0){	//右侧继续运算,a先自减
            System.out.println("a = " + a);//a = 4
        }
        if(b < 0 && --b > 0){	//右侧不再运算,b未自减
            System.out.println("b = " + b);
        }else System.out.println("b = " + b);//b = 10
    }

2-3.位运算符

“>>”:右移运算符,num >> 1,相当于num除以2

“<<”:左移运算符,num << 1,相当于num乘以2

“>>>”:无符号右移,忽略符号位,空位用0补全

这部分内容需要了解二进制知识点

2-4.三元运算符

条件表达式?表达式1:表达式2

其结果为boolean型,根据条件表达式的结果真假,真则执行表达式1,假则执行表达式2。

凡是使用三元运算符的地方,都可以改写成 if-else 结构,反之不成立。因为三元运算符更为简洁高效,所以比起 if-else 结构,优先选用三元运算符。

    @Test//测试三元运算符求两个数的最大值max
    public void Test4(){
        int a = 5,b = 10;
        int max;
        max = a>b?a:b;
        System.out.println("max = " + max);//max = 10
    }

四、流程控制

1.分支结构

1-1.关于 if-else

注意事项:

①如果多个条件表达式之间没有交集关系,那么执行语句的顺序是任意的;

②如果多个条件表达式之间有交集关系,要根据情况确定哪个结构声明在上面;

③如果多个条件表达式之间有包含关系,一般将范围小的声明在上面,不然会没有执行机会;

④当执行语句只有一行时,对应的{}可以省略,但是不建议这样做。

1-2.关于 switch-case

switch(表达式){	//根据switch表达式中的值,依次匹配各个case中的常量
case 常量1:		//case 之后只能声明常量。不能声明范围。
	执行语句1;
	//break;	//没有break时,调用完执行语句以后,继续向下执行其他case结构	
case 常量2:
	执行语句2;
	break;		//一旦执行到break关键字,就跳出switch-case结构
...
default:        //default:相当于if-else结构中的else
	执行语句n;
	break;
}

注意: switch结构中的表达式,只能是如下的6种数据类型之一:byte 、short、char、int、枚举类(JDK5)、String(JDK7)。

2.循环结构

2-1.关于for循环

没有易遗忘知识点,不做赘述。

2-2.关于 while/do-while循环

//while循环执行顺序:①②③④-②③④-②③④-……②while(){		//更多使用while而非do-while;;
}
//do-while循环执行顺序:①③④-②③④-②③④-……②do{		//do-while循环至少会执行一次循环体;;
}while();

2-3.无限循环

while(true) 或 for( ; ; )会形成无限循环。

终止循环①当循环条件为false;②在循环体中执行break。

3.关键字:break和continue

关键字使用范围不同点相同点
breakswitch支路 / 循环体结束当前循环关键字后面不能执行声明语句
continue循环体结束本次循环关键字后面不能执行声明语句

总结

只是简单总结了变量、运算符、流程控制等知识点,复习时配合JAVA基础练习文档使用,重点在于灵活地使用嵌套循环结构。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值