Java基础:注释、标识符、数据类型、类型转换

注释

注释不会被执行

写代码需要写注释,注意代码规范

  • 单行注释

    //注释内容
    
  • 多行注释

    /*
    这里可写
    多行注释内容
    */
    
  • 文档注释

文档注释中的内容可读

/**
* @Description xxx
* @Author chachan53
*/

标识符

  • 关键字
  • Java所有的组成部分都需要名字,类名、变量名以及方法名都被称为标识符

关键字

标识符注意点

  1. 所有的标识符都应使用字母、美元符($)、下划线(_)开头;
  2. 首字母后可以使用字母、美元符、下划线和数字
  3. 不能使用关键字作为变量名或方法名
  4. 大小写敏感:有大小写差异的标识符会被认定为两个不同的标识符,如Age和age是两个不同的标识符
  5. 可以中文命名,但不建议

数据类型

  • 强类型语言:要求变量的使用要严格符合规定,所有变量必须先定义才能使用(安全性高,速度蛮)
  • 弱类型语言

字节

  • 位(bit):计算机内部数据存储的最小单位,11011001是一个八位二进制数
  • 字节(byte):计算机中数据处理的基本单位,习惯上用大写B表示,1 B(byte,字节) = 8 bit(位)
  • 字符:计算机中使用的字母、数字、字和符号
    • 1 bit表示1位
    • 1 Byte表示一个字节,1 B = 8 b
    • 1024 B = 1 KB
    • 1024 KB = 1 M
    • 1024 M = 1 G

Java的数据类型

  • 基本类型(primitive type)
  public class Demo02 {
      public static void main(String[] args) {
          //整数
          int num1 = 10;  //最常用
          byte num2 = 20;
          short num3 = 30;
          long num4 = 30L;    //Long类型要在数字后面加L
  
          //浮点数(小数)
          float num5 = 50.1F; //float类型要在数字后加F
          double num6 = 3.144543534543534;
  
          //字符
          char name = 'A';    //字符表示一个字,只能赋一个字,注意使用单引号
  
          //字符串,String不是关键字,是类
          //String aname = "aha";
  
          //布尔值,值只有true和false
          boolean flag = true;
      }
  }
  • 引用类型

    如String

整数拓展

  • 二进制:数字前加0b
  • 十进制
  • 八进制:数字前加0
  • 十六进制:数字前加0x;09,AF
int num1 = 10;      //输出结果为10
int num2 = 0b10;    //输出结果为2
int num3 = 010;     //输出结果为8
int num4 = 0x10;    //输出结果为16,0~9,A~F
System.out.println(num1);
System.out.println(num2);
System.out.println(num3);
System.out.println(num4);

输出结果为

10
2
8
16

浮点数拓展

  • float:长度有限,数字是离散的,具有舍入误差,其存储的数字是大约的,接近但不等于原值
  • double
  1. 相同值的float和double类型的数不相等:
float f = 0.1f;  //0.1
double d = 1.0/10;  //0.1
System.out.println(f==d);   //false

输出结果为false

  1. 浮点数的值不是原值
float d1 = 23423423472389472389472f;
float d2 = d1 + 1;
System.out.println(d1==d2);    //true

输出结果为true

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

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

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

字符串扩展

所有的字符本质还是数字

Unicode编码,2字节,范围为0-66535,按照ASCII表对应数字(U0000 - UFFFF)

char c1 = 'a';
char c2 = '中';
char c3 = 65;   //直接输入数字,内容为表中对应内容

System.out.println(c1);
System.out.println((int)c1);    //强制转换
System.out.println(c2);
System.out.println((int)c2);    //强制转换
System.out.println(c3);

输出结果为:

a
97		//输出被转换为字符对应的数20013	//输出被转换为字符对应的数
A		//输出了数字对应的字符

转义字符

  • 制表符\t:效果类似于Tab
  • 换行符\n:换行

String

String的new和直接赋值存在区别

String sa = new String("Hello,world");
String sb = new String("Hello,world");
System.out.println(sa == sb);   //false

String sc = "Hello,world";
String sd = "Hello,world";
System.out.println(sc == sd);   //true
  • new创建是新的空间,指向的地址不同

  • 直接赋值,在内存的同一地址取出,指向的地址和内容都相同

  • 可以用equals比较字符串的内容

布尔值扩展

//布尔值
boolean flag = true;
if(flag == true ){ }
if(flag){ }		//更加精简

在对布尔值的判定中,if括号中的内容默认为true判定执行,可以精简代码

less is more

类型转换

低———————————————————>高

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

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

  • 强制转换 (类型)变量名 高->低

  • 自动转换 低->高

注意点

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

内存溢出1:

int i = 128;
byte b = (byte)i;   //输出结果为-128,表示范围到127,内存溢出,结果错误
double d = i;   //无需强制转换

内存溢出2:先用原类型计算,后再转换变量类型

//JDK7新特性,数字之间可以下划线分割
int money = 10_0000_0000;
int years = 20;
int total = money*years;    //结果为-1474836480,溢出

long total2 = money*years;  //结果仍为-1474836480,在结果转换为long前,首先使用int类型计算得到结果
long total3 = money*((long)years);  //结果为20000000000,先把一个数转化为long

使用l时用大写L

精度问题:

System.out.println((int)23.7);  //23,省去小数,而不是四舍五入
System.out.println((int)-45.98);    //-45

数字字符转换

同级数字和字符转化时以编码形式转换

char c = 'a';
int i1 = c + 1 ;
System.out.println(i1);    //98
System.out.println((char)i1);   //b
posted @   chachan53  阅读(103)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示