JAVA基础语法(上)

JAVA基础语法(上)

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

1.注释

注释并不会被执行,是为了增强代码的可读性

单行注释

public class Hello {
    public static void main(String[] args){
		//单行注释
        //只能注释一行文字
        System.out.println("hello world!");
    }
}

多行注释

public class Hello {
    public static void main(String[] args){
		/*
		多行注释
		多行注释
		多行注释
		可以注释一段文字
		*/
        System.out.println("hello world!");
    }
}

文档注释

public class Hello {
    public static void main(String[] args){
		/**
		文档注释,在Java Doc详细记载
		*/
        System.out.println("hello world!");
    }
}

2.标识符

(1)所有标识符只能以字母(A-Z、a-z),美元符-$,或者下划线 _ 开始。(标识符大小写敏感)

(2)不能使用关键字作为变量名。

(3)可以使用中文,但不建议使用。

二、数据类型

Java是强类型语言,要求变量的使用严格合乎规定,所有变量必须先定义后才能使用

1.基本数据类型

(1)数值型

​ **整数型:**byte(1字节)、short(2字节)、int(4字节)、long(8字节)

​ **浮点型:**float(4字节)、double(8字节)

​ **字符型:**char(2字节)

//整形
int num1 = 10;
byte num2 = 20;
short num3 = 30;
long num4 = 40L;

//浮点型
float num5 = 10.1F;
double num6 = 10.1;

//字符型
char name = 'a';
//字符串类型String,String不是关键字,是类
String = "awtgu13124"

(2)boolean类型

占一位,其值只有True和False

boolean yes = true;
boolean no = false; 

2.引用数据类型

除基本类型外,其余都是引用类型,包括 类、接口、数组 等

3.拓展(面试问题

(1)整数拓展:进制问题

public class Test {
    public static void main(String[] args){
        //二进制-0b  八进制-0  十六进制-0x
        int i = 10;
        int i2 = 0b10;
        int i3 = 010;
        int i4 = 0x10;
        
        System.out.println(i);
        System.out.println(i2);
        System.out.println(i3);
        System.out.println(i4);
    }
}

输出结果分别为

i = 10;
i2 = 2;
i3 = 8;
i4 = 16;

(2)浮点数拓展

浮点数是有限的、离散的,具有舍入误差的,它只能接近但不能等于某数值

浮点数是有限的、离散的,具有舍入误差的,它只能接近但不能等于某数值

浮点数是有限的、离散的,具有舍入误差的,它只能接近但不能等于某数值

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

​ 输出结果为

0.1   0.1  false

所以最好完全避免使用浮点数进行比较

所以最好完全避免使用浮点数进行比较

所以最好完全避免使用浮点数进行比较

​ 在银行业务中,为避免出现错误,我们使用数学工具类 —— bigDecimal进行计算。


(3)字符拓展

所有的字符本质还是数字

Unicode编码,2字节,0-65536 --> U0000-UFFFF

public class Test {
    public static void main(String[] args){
        char c = 'a';
        char c2 = '\u0065'; // '\'为转义字符
            
        System.out.println(c);
        System.out.println((int)c); //强制类型转换
        System.out.println(c2);
    }
}

​ 输出结果

a
97
a    

(4)转义符

​ \t 制表符

​ \n 换行符

​ …

public class Hello {
    public static void main(String[] args){
        System.out.println("hello\tworld\n!");
    }
}

输出结果

hello	world
!

三、类型转换

低----------------------------------------------------------------------->高

byte -> short -> char -> int -> long -> float -> double

在运算中,不同类型的数据先转换为同一类型,然后进行运算

*注意:

1. 不能对布尔值进行转换
2. 不能把对象类型转换为不相干的类型
3. 在把高容量转换为低容量时,强制转换
4. 转换的时候可能存在内存溢出,或者精度问题

1.低到高(自动转换)

public class Test {
    public static void main(String[] args){
		int i = 10;
        double j = i;
 		
        char c = 'a';
        int d = c + 1;
        
        System.out.println(j);
        System.out.println(d);
    }
}

输出结果

10.0
98 //字符类型本质也是数字,a对应的码值为97,char类型自动转换为整形

2.高到低(强制转换)

**强制类型转换 (类型)变量名 **

public class Test {
    public static void main(String[] args){
		int i = 128;
        byte j = (byte)i;
 		
        float i2 = 10.1f;
        int j2 = int(i2);
        
        int i3 = 97;
        char j3 = char(i3);
        
        System.out.println(j);
        System.out.println(j2);
        System.out.println(j3);
    }
}

输出结果

-128 //因为byte类型的取值范围是 -128~127 ,128超出范围,出现溢出,所以为-128
10 //精度问题,浮点数转换为整型时,直接舍去小数部分,不采取四舍五入
a

3.常见问题

操作较大数的时候,注意溢出问题

public class Test {
    public static void main(String[] args){
		int salary = 10_0000_0000; //JDK7之后新特性,数字之间可用下划线分割
        int years = 20;
        
        int total = salary*years;
        long total2 = salary*years;
        long total3 = salary*((long)years);
        
        System.out.println(total);
        System.out.println(total2);
    	System.out.println(total3);
    }
}

输出结果

-1474836480 //计算时出现溢出
-1474836480 //计算的两个数值均为int类型,转换之前已经出现问题
200000000 //计算前先进行了自动类型转换
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

徐先生没洗头

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

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

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

打赏作者

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

抵扣说明:

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

余额充值