Java SE 01(标识符、数据类型、类型转换、变量和常量、运算符、包机制、使用Debugger)

Java SE 01

一、标识符

  1. 所有标识符都应该以字母(A-Z或者a-z),美元符号($),或者下划线(_)开始

  2. 不能使用关键字作为变量名或者方法名

  3. 标识符是大小写敏感的

  4. Java可以使用中文作为变量名或类名,一般不推荐这样命名

  5. 非法标识符举例:123abc, -salary, #abc

二、数据类型

  1. Java两大数据类型

    基本类型(primitive type): 4类8种

    整数型:byte short int long

    浮点型:float double

    字符型:char

    布尔型:boolean

    引用类型(reference type) : 可理解为指针变量类型,默认初始值为null

    字符串、数组、类、接口、Lambda

    注意事项

    • 字符串不是基本类型,而是引用类型
    • 浮点数当中默认类型是double,如果一定要使用float类型,需要加一个后缀F,推荐使用大写字母后缀
    • 如果是整数,默认类型是int,如果一定要使用long类型,需要加上一个后缀L,推荐使用大写字母后缀
    • Java中char类型允许写一个中文字,char cz =' 中';
    • char类型不允许写空字符如:'' 不允许写一个以上字符如:'aa'
  2. 八大基本数据类型举例

    //整数
    int num1 = 10;
    byte num2 = 20;
    short num3 = 30;
    long nun4 = 30L; //long类型后面要加L
    
    //小数:浮点数
    float num5 = 50.1F; //float类型后面要加F
    double num6 = 3.1415926;
    
    //字符
    char name = 'a';
    //字符串String不是关键字,是类
    String namea = "Hello";
    
    //布尔值:是和非
    boolean flag = true;
    boolean flag2 = flase;
    
  3. 基本数据类型的占用内存大小与数值范围


  4. 所有的字符本质都是数字

    • ASCII码表: American Standard Code for Information Interchange

    • Unicode码表:万国码。也是数字和符号的对照关系,开头0-127部分和ASCII完全一样,但从128开始包含更多的字符

    • Unicode表(48 - '0', 97 - 'a', 65 - 'A')每个字符占两个字节,数值范围是0-65536(2^16)

    U0000-UFFFF

    char c1 = '\u0061';
    System.out.println(c1); //output: a
    

    字符可以与数字进行强制类型转换

    char c1 = 'A';
    char c2 = '人';
    
    System.out.println((int)c1);//output:65
    System.out.println((int)c2);//output:20154
    
  5. 整数拓展

    二进制0b, 十进制, 八进制0, 十六进制0x

    int i = 10;
    int i2 = 010;//八进制0
    int i3 = 0x10;//十六进制0x
    
    System.out.println(i);//10
    System.out.println(i2);//8
    System.out.println(i3);//16
    
  6. 浮点数拓展

    注意:银行业务数据一般要使用BigDecimal数学工具类


    float f = 0.1f;
    double d = 1.0/10;
    System.out.println(f == d); //output: false
    
    float d1 = 232332332323f;
    float d2 = d1 + 1;
    System.out.println(d1 == d2)//output: true
        
    //结论: 最好完全使用浮点数进行比较
    

三、类型转换

Java是强类型的语言,所以有些运算,需要进行类型转换

运算中不同类型先转化为同一类型,然后进行运算

一般 低->高 自动转换 , 高->低 强制转换(注意数值范围,可能会溢出)

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

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


类型转换总结

  1. 不能对布尔值进行转换

  2. 不能把对象类型转换为不相干的类型

  3. 把高容量转低容量时,强制转换

  4. 转换时可能存在内存溢出,或是有精度问题

  5. byte/int/short这三种类型都可以发生数学运算,如加法

  6. byte/int/short这三种数据类型在运算的时候,都会首先被提升成int类型,然后再计算

    在给变量进行赋值的时候,如果右侧表达式当中全是常量,没有任何的变量,那么编译器javac将会直接将若干个常量表达式计算得到结果

    short num1 = 10;
    short a = 5;
    short b = 8;
    
    short result0 = a + b;//Error
    short result1 = 5 + 8;//Correct!
    short result3 = 5 + a + b;//Error
    
  7. 对于byte/short/char三种类型,如果右侧赋值的数值没有超过范围,则Java编译器会自动隐含地为我们补上(byte) (short) (char)

    • 如果右侧没有超出左侧的范围,编译器补上强转
    • 如果右侧超过了左侧范围,那么编译器直接报错

int money = 10_0000_0000;//JDK7 新特性,数字间用下划线分隔开好看
int years = 20;//int 数值范围在21亿左右
int total = money*years; //计算时溢出了
long total2 = money*years;//转换前已经存在问题了,两个int相乘
long total3 = money*((long)years);//int*long 无强制是低转高为int>long,long*long

System.out.println(total);//-1474836480 
System.out.println(total2);//-1474836480 
System.out.println(total3);//20000000000
System.out.println((int)23.7);//output: 23 高转低,损失精度
System.out.println((int)-45.89f);//output: -45 高转低,损失精度
char c = 'a';
int d = c + 1;//低转高,自动转换
System.out.println(d);//output: 98
System.out.println((char)d);//output: b 高转低,强制转换
short num1 = 30;
short num2 = 40;
short sum = num1 + num2;//int->short可能会溢出
int sum = num1 + num2;//int->int

四、变量和常量

变量作用域

  • 类变量:要加static该变量是要从属于类的,会随这个类一起存在一起消失,不从属于对象(不用建立对象就可使用)
  • 实例变量:一般在类内部在方法外部,实例变量从属于对象(需要建立对象后使用),如果不自行初始化,就是这个类型的默认值(int -> 0, double -> 0.0 , boolean-> false, char-> u0000, 引用类型都是null 如 String -> null)
  • 局部变量
public class Variable {
    static int allClicks = 0;   //类变量
    String str = "Hello World"; //实例变量
    
    public void method {
        int i = 0; //局部变量
    }
}

变量的命名规范

  • 适用于变量、方法、类名

  • 类成员变量:首字母小写和驼峰原则(除了第一个单词后面的单词首字母大写)

    lastName、monthSalary

  • 局部变量:首字母小写和驼峰原则

  • 常量:字母全是大写和中间要加下划线:MAX_VALUE

  • 类名:首字母大写和驼峰原则:Man、GoodMan

  • 方法名:首字母小写和驼峰原则:run(), runRun()


常量

  • 初始化后不能再改变的值, 也就是不会变动的值

  • 可以将常量理解为一种特殊的变量,它的值被设定好后在程序中不允许再被改变

  • final是修饰符与表示类变量的static先后顺序可互换(static也是修饰符,所以也就是修饰符不区分先后顺序)

//final 常量名 = 值;
final double PI = 3.14; //常量名一般用大写字母

五、运算符

逻辑运算符号

//短路运算
int c = 5;
boolean d = (c < 4) && (c++ < 4);//c<4为false,&&后面的部分不再进行运算
System.out.println(d);//output: false
System.out.println(c);//output: c = 5

位运算(效率极高)

0000 0000 0

0000 0001 1

0000 0010 2

0000 0100 4

0000 1000 8

0001 0000 16

<<(左移) 每左移一位相当于*2

> > (右移) 每右移一位相当于/2


字符串连接符

int a = 10;
int b = 20;
System.out.println(a+b); //output:30
System.out.println(""+a+b); //output:1020
System.out.println(a+b+"");//output:30

三元运算符

x ? y : z

如果x == true则结果为y,否则为z

int score = 50;
String grade = score<60 ? "fail" : "pass";
System.out.println(grade);//output: fail

六、包机制

  • Idea中的常用快捷键

    Ctrl + 鼠标左键点击某个类名如String可查看包内源码

    Alt + Enter 对某个类进行错误识别方便导包

  • 在每个Java文件中package一定是在import之前的位置

  • 一般用公司域名倒置作为包名

  • 导包不能将与当前类名(或是Java文件名)相同的包中类导入

  • import xxxxxxx. 相当于导入当前包下的所有类*

七、使用Debugger

  • 作用:可以让代码逐行执行,查看代码的执行过程,调试程序中出现的bug

  • 使用方式:

    在行号的左边,鼠标左键单击,添加断点(每个方法的第一行,或是哪里有bug添加到哪里)

    右键,选择Debug执行程序

    程序就会停留在添加的第一个断点处

  • 执行程序:

    idea快捷键

    f8:逐行执行程序

    f7:进入到方法中

    shift+f8:跳出方法

    f9:跳到下一个断点,如果没有下一个断点,那么就结束程序

    Console:切换到控制台,查看输出情况

posted @   Ramentherapy  阅读(833)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示