JavaSE:基础语法

注释


单行注释:只能注释当前行,已//开始,

//你好呀

多行注释:注释一段文字

/*
	你好呀,我是波小涛!
	感谢看我的播客。
*/

文档注释:用于生产API文档,配合JavaDoc。

/**
 * @Description 你好呀,我是波小涛!
 * @Author 这是文档注释呀。
*/

标识符

java定义好的关键字

abstractassertbooleanbreakbyte
casecatchcharclassconst
continuedefaultdodoubleelse
enumextendsfinalfinallyfloat
forgotoifimplementsimport
instanceofintinterfacelongnative
newpackageprivateprotectedpublic
returnstricffpshortstaticsuper
switchsynchronizedthisthrowthrows
transienttryvoidvolatilewhile

自己起名字要求:
表示类名的标识符用大写字母开始。如:Test,HeadEat。
表示方法和变量的标识符用小写字母开始,后面的以大写开始。如eat(),eatFood()。


关于Java标识符的注意点:

  • 所有的标识符都应该已字母,美元符或下划线开始。
  • 首字母之后可以是字母,美元符,下划线或数字之外的任何字符组合。
  • 不能使用关键字作为变量名或方法名。
  • 标识符是大小写敏感的。

数据类型


强弱类型语言

强类型语言:要求变量的使用严格符合规定,所有变量都必需先定义后才能使用。
弱类型语言:与强类型语言相反。像vb,php等就属于弱类型语言。

数据类型

Java的数据类型范围两大类:基本类型和引用类型。
在这里插入图片描述

基本数据类型占内存默认值
byte1字节0
short2字节0
int4字节0
long8字节0L
float4字节0.0F
double8字节0.0
char2字节‘\u0000’
boolean1字节false

位(bit):是计算机最小的储存单位。
字节(byte):是计算机中的基本单位。
字符:指计算机中使用的字母、数字、字和字符
ASCIIS码

1个英文字母=1个字节
1个中文汉字=2个字节
1个ASCII码=1个字节

UTF-8编码

1个英文字符=1个字节
英文标点=1个字节
1个中文汉字=3个字节
中文标点=3个字节

Unicode编码

1个英文字符=2个字符
英文标点=2个字节
1个中文汉字=2个字节
中文标点=2个字节

bit表示1位
Byte表示一个字节 1B=8b
1024B=1kB
1024KB=1M
1024M=1G

整型拓展


十进制,八进制,十六进制表示:
十进制整数,如:99-99
八进制整数,要求以0开头,如:015
十六进制整数:要求0x或0X开头,如:0x99

浮点型拓展

【金融面试问:银行金融业务用什么类型表示?】
浮点类型float,double的数据不适合在不容许舍入误差的金融计算领域。
如果需要进行不产生舍入误差的精确数字计算,需要BigDecimal类。

public static void main(String[] args) {
        float f = 0.1f;
        double d = 1.0 / 10;
        System.out.println(f == d);

        float d1 = 12312312313f;
        float d2 = d1 + 1;
        if (d1 == d2){
            System.out.println("d1==d2");
        }else {
            System.out.println("d1!=d2");
        }
    }

在这里插入图片描述
主要原因:
浮点数能够精确表示的数是有限的,因而也是离散的。浮点数一般都存在舍入误差,很多数字无法精确表示,其结果只能是接近,但不等于;
最好完全避免使用浮点数比较!

字符型拓展


char类型用来表示在Unicode编码表中的字符。
【字符转int】

public static void main(String[] args) {
        char c1 = 'a';
        char c2 = '中';
        System.out.println(c1);
        System.out.println((int) c1);
        System.out.println(c2);
        System.out.println((int) c2);
    }

在这里插入图片描述
Unicode通常用’u0000’到’uFFFF’之间的十六进制值来表示
Java常用的转义字符

\b退格\u0008
\n换行\u000a
\r回车\u000d
\ttab键\u0009
"双引号\u0022
单引号\u0027
\反斜杠\u0050

布尔型拓展


boolean类型(一位,不是一个字节),就是0和1
boolean类型有两个值,true和false,不可以0或非0的整数代替true和false,这点和C语言不同。

类型转换


由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。
整型、常量、字符型数据可以混合运算。
运算中,不同类型的数据先转换为同一类型,然后进行运算。
转换从低级到高级

---------------------------------->高级
byte,short,char->int->long->float->double

数据类型转换必须满足如下规则:

  • 不能对boolean类型进行类型转换。
  • 不能把对象类型转换成不相关类的对象。
  • 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
  • 转换过程中可能导致溢出或损失精度。例如:
 public static void main(String[] args) {
        int i = 128;
        byte b = (byte)i;
        System.out.println(b);
    }

在这里插入图片描述
因为byte类型是8位,最大值为127,所以当int强制类型转换为byte类型时值为128时候就会导致溢出。

  • 浮点型到整数的转换是通过舍弃小数得到的,而不是四舍五入,例如:
public static void main(String[] args) {
        System.out.println((int) 23.7 == 23);
        System.out.println((int)-45.89f == -45);
    }

在这里插入图片描述

自动类型转换


自动类型转换:容量小的数据类型可以自动转换为容量大的数据类型。
例如:short数据类型的位数为16位,就可以自动转换位数为32的int类型,同样float数据类型的位数为32位,可以自动转换为64位的double类型。

强制类型转换


强制类型转换有可能造成精度降低或溢出。
强制类型转换的语法格式:(type)var。条件是转换的数据类型必须是兼容的。

常见错误和问题


  1. 操作比较大的数时,要留意是否溢出,尤其是整数操作时;
public static void main(String[] args) {
        int money = 10_0000_0000;//JDK7新特性,不会打印下划线方便查看特别大的数字。
        int year = 20;
        int total = money * year;
        long total1 = money * year;
        long total2 = money * (long)year;
        System.out.println(total);
        System.out.println(total1);
        System.out.println(total2);
    }

在这里插入图片描述

  1. L和l的问题:
    不要命名名字为l的变量
    long类型使用大写L不要用小写。(因为小写像1)

变量,常量


变量


Java是一种强类型语言,每个变量都必须声明其类型。
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域

public static void main(String[] args) {
        int a,b,c;
        int d = 1,e = 2,f = 3;
        byte z = 22;
        String s = "jiang";
        double pi = 3.14159;
        char x = 'x';
    }

注意事项:

  • 每个变量都有类型,类型可以是基本类型,也可以是引用类型;
  • 变量名必须是合法的标识符。
  • 变量声明是一条完整的语句,每个声明都必须已分号结束;

变量作用域


变量根据作用域可以划分为三种:

  • 类变量(静态变量):独立于方法之外的变量,用static修饰。从属与类,生命周期伴随类始终。如果不初始化会自动化成该类的默认初始值;
  • 实例变量(成员变量):独立于方法之外的变量。从属于对象,生命周期伴随对象始终。如果不初始化会自动化成该类型的默认初始值。
  • 局部变量:类的方法中的变量。生命周期是从声明位置开始到“}”结束。在使用前必须声明和初始化。
public class JavaSETest06 {

    static  int all = 0;//类变量
    String str = "hello world";//实例变量
    
    public void  fun(){
        int i = 10;//局部变量
    }

}

常量


常量:初始化后不能在改变的值!

final double PI = 3.14;

变量的命名规范


  • 所有变量、方法、类名:见名知意
  • 类成员变量:首字母小写和驼峰原则:myValue
  • 局部变量:首之母小写和驼峰原则
  • 常量:大写字母和下划线:MAX_VALUE
  • 类名:首字母大写和驼峰原则:MyTest
  • 方法名:首字母小写和驼峰原则:funGood

运算符


Java语言支持的运算符

  • 算数运算符:+,-,*,/,%,++,–
  • 赋值运算符:=
  • 关系运算符:>,<,>=,<=,==,!=
  • 逻辑运算符:&&,||,!
  • 位运算符:&,|,^,~,>>,<<,>>>
  • 条件运算符:?
  • 扩展运算符:+=,-=,*=,/=

二元运算符

整数运算

public static void main(String[] args) {
        long a = 123123123132123L;
        int b = 123;
        short c = 10;
        byte d = 1;

        System.out.println(a+b+c+d);//long类型
        System.out.println(b+c+d);//int类型
        System.out.println(c+d);//int类型
    }

浮点数运算

public static void main(String[] args) {
        float a = 3.14F;
        double b = 3.33333;
        float c = 7.777F;

        System.out.println(a+b);//double类型
        System.out.println(b+c);//double类型
        System.out.println(a+c);//float类型
    }

关系运算符
在这里插入图片描述

取模运算


负数%负数 = 负数;
负数%正数 = 负数;
正数%负数 = 正数;

public static void main(String[] args) {
        System.out.println(9 % 4);//1
        System.out.println(-9 % -4);//-1
        System.out.println(-10 % 4);//-2
        System.out.println(9 % -4);//1
    }

一元运算符


自增(++)自减(–)运算符是一种特殊的算术运算符,在算术运算中需要两个数来进行运算。而自增自减运算符是一个操作数,分为前缀和后缀两种。

public static void main(String[] args) {
        int a = 3;
        int b = a++;//执行完后,b=3。先给b赋值,在自增。
        int c = ++a;//执行完后,c=5.先自增,在给b赋值。
    }

逻辑运算符

在这里插入图片描述

public static void main(String[] args) {
        boolean  a = true;
        boolean b = false;
        System.out.println(a && b);//a和b都为true是才为true
        System.out.println(a || b);//a和b只要有一个为true就为true
        System.out.println(!(a && b));//如果结果为true则变为false
    }

逻辑与和逻辑或采用短路的方式
逻辑与只要有一个false,就直接false。
逻辑或只要有一个true,就直接true。

位运算


在这里插入图片描述
【面试题:int a = 2*8如何运算效率快?】

public static void main(String[] args) {
        System.out.println(2 << 3);
    }

拓展运算符


在这里插入图片描述

字符串连接符


“+”运算符两侧的操作中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接。

public static void main(String[] args) {
        String s1 = "Hello World";
        String s2 = 1 + "";//转换成String
        //int
        int c = 12;
        System.out.println("c=" + c);
    }

三目条件运算符


public static void main(String[] args) {
        int score = 80;
        String type = score < 60 ? "不及格" : "及格";
        System.out.println("typr=" + type);
    }

运算符优先级

在这里插入图片描述

JavaDoc


idea生成JavaDoc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

波小涛

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

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

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

打赏作者

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

抵扣说明:

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

余额充值