Java-Day-2(转义字符 + 注释 + 代码规范 + 变量 + 数据类型)

发布时间 2023-04-03 11:44:01作者: 朱呀朱~

Java-Day-2

常用转义字符

代码中只一个 \ 会默认转义(写在 “ ” 里)

  • \t :制表位,可以实现对齐功能,可以看作有一个无形表框( 上下两行长度相差不大 )

  • \n:换行符,仅换代码行的话

  • \\:一个 \,想输出 " \\ " 就要输入四个 \

  • \'':一个 “ ,字符串里输出双引号

  • \':一个 ‘

  • \r:一个回车,光标回到当前行开头,据情况可能会替换前面的字符

    ( 在 Linux、unix 里 \n 只表示换行,不会回到开始位置,所以要搭配 \r\n )

错误

  • 语法错误:无法通过编译

  • 业务错误:能编译运行不对

  • 环境错误:仅在自己的环境里可以正常运行

注释

  • 增加代码可读性

  • 常用注释

    1. 单行注释:// ( Ctrl + / )

    2. 多行注释:/* 不允许嵌套 */

    3. 文档注释:注释内容可以被 JDK 的 javadoc 程序所解析,生成一套以网页文件形式体现的该程序的说明文档,一般写在类

      /**

      *@author 消默

      *@version 1.0

      *( javadoc 标签)

      */

      dos控制台里输入:

      javadoc -d 自定义文件夹路径(d:\\temp) -author -version 文档注释所在文件名.java

代码规范

  • 类、方法的注释,要以 javadoc 的方式来写 — 文档注释
  • 给代码维护者阅读者看的修改、注意问题 — 单行或多行注释来写
  • tab 整体向右,tab + shift 整体左移
  • 行尾风格:每一行行尾就写大括号,次行风格:另起一行写大括号
  • 源码文件要用 utf-8 编码

变量

  • 变量表示内存中一个存储区域( 不同的变量,类型不同,占用的空间大小也不同 )
  • 三个基本要素:数据类型 + 变量名 + 值
  • 定义变量赋初值,相当于是在内存中一个地址指向已分配了的空间( 空间用来放值 )
  • 换值时,找到此地址,找到对应空间,更换空间内的值
  • 同一个作用域内不能有重名的变量
  • 对变量进行 + 运算:数值加法,字符串拼接
 System.out.println("hello" + 100); //hello100
 System.out.println("100" + 100); //100100
 System.out.println(100 + 100); //200
 System.out.println(100 + 100 + "100"); //200100 

Java 数据类型

基本数据类型 — 范围和长度固定 — 保证了 java 程序的可移植性

  • 数值型
    • 整数类型 [ 占用存储空间 X 字节 ]
      • byte[1], short[2], int[4], long[8]
    • 浮点( 小数 )类型
      • float[4], double[8]
  • 字符型
    • 存放单个字符 ' a '
      • char[2]
  • 布尔型
    • 存放 true,false
      • boolean[1]

( 暂不拓展 )引用数据类型

  • 类( class )(String 也属于其中)
  • 接口( interface )
  • 数组( [ ] )

整数类型

  • byte[字节,1字节] 范围:-128 ~ 127

    • byte:计算机中基本存储单元

      ( bit:计算机中最小的存储单位,1byte = 8bit )

      ( byte n = 3 ——> 00000011 )

  • short[短整型,2字节] 范围:- 2 ^ 15 ~ 2 ^ 15 - 1

  • int[整形,4字节] 范围:- 2 ^ 31 ~ 2 ^ 31 - 1

    • 通常所用
  • long[长整型,8字节] 范围:- 2 ^ 63 ~ 2 ^ 63 - 1

    • 声明时,后加 “ l ” 或 " L "

浮点类型

  • float[单精度,4字节]

    • 声明时,后加 " f " 或 " F "
    • 超出的小数直接舍去
  • double[双精度,8字节]

    • 小数数据常量默认
    • 通常所用
  1. 浮点数在机器中存放形式: 浮点数 = 符号位 + 指数位 + 尾数位

  2. 尾数部分可能丢失,造成精度损失( 小数都是近似值 )

  3. 十进制写法:写 0.XX 小数时,可以省去0,写为 .XX

  4. 科学计数法:5.12e2 [ 5.12 * 10的2次方 — 512.0 ],5.12E - 2 [ 5.12 / 10的2次方 — 0.0512 ]

double n1 = 2.7;
double n2 = 8.1 / 3; // 计算机角度是以精度来,8.1实际是:8.100...
// n1 = "2.7", n2 = "2.6999....7" 

// 注意小数间的相等判定
if(n1 == n2){
    System.out.println("两者不相等的")
}

// 直接查询或者直接赋值的小数,是可以判断相等
// 要用两个数的差值的绝对值
if(Math.abs(n1 - n2) < 0.000001){
    System.out.println("差值小到规定精度就认为相等");
}

// 看java API方式
    System.out.println(Math.abs(n1 - n2));                  

API(Application Programming Interface,应用程序编程接口)是 Java 提供的基本编程接口( java 提供的类还有相关方法),中文在线文档:https://www.matools.com ,找在线 API

Java 类的组织形式

JDK:

    • 接口
      • 字段
      • 构造器(构造方法)
      • 成员方法(方法)
    • 枚举
    • 异常
  • ......

字符类型

  1. 可以表示单个字符,字符类型是 char,是两个字节,可以存放汉字

​ (多个字符用字符串 String:双引号)

  1. 给 char 赋值一个整数(无单引号)的话,就代表其 unicode 码对应的值,例:97 —> a,可( int )强转字符为数字
  2. 也可赋为某转义字符,输出的则是转义后的结果
  3. java 中,char 本质就是一个整数,输出时是 unicode 码对应的字符,所以char是可以参与运算的
System.out.println('a' + 10); // 107
  1. 输出一个赋值字符( 找数字 —> 对应的字符 —> 编码表 ASCII —> 值 )

  2. 字符类型本质与编码表

    • 字符型存储到计算机中,需要将字符对应的码值找出来,如:

      • 存储:' a ' —> 码值97 —> 二进制 —> 存储
      • 读取:二进制 ( 110 0001 ) —> 97 —> ' a ' —> 显示
    • 字符编码表

      • ASCII( American Standard Code for Information Interchange,美国标准信息交换码 ),是用一个字节表示的128个字符( 实际上一个字节可以表示256个字符,但美国字母就26个,256的话用不了 )

        缺点:不能表示所有字符

      • Unicode,使用两个字节来表示字符,字母、汉字统一占用两个字节,将世界上所有符号纳入其中,不会乱码,2 ^ 16 = 65536个字符,兼容ASCII表于其中

        缺点:都占两个字节,浪费空间

      • utf-8,大小可变的编码,可以使用1 ~ 6个字节表示一个符号,字母用1个字节,汉字用3个字节,可视为 Unicode 的改进,

布尔类型

  1. 也叫 boolean 类型,只取 true 和 false,只占一个字节
  2. 常处于逻辑判断

类型转换

  1. 当 java 程序在进行赋值或者运算时,精度小的类型会自动转换为精度大的数据类型,即自动类型转换( 小 —> 大 )

    • 箭头指向为可转 ( Convert ) 为
    • char —> int —> long —> float —> double
    • byte —> short —> int —> long —> float —> double
    int n = 1;
    byte b1 = n; //报错,判断类型四字节放不进一字节
    
    //但是可以直接存入1,因为 byte 范围是 - 128 ~ 127
    byte b2 = 1; 
    //但经过计算了的话就都是 int 类型了(见4.),除非强转
    b2 = b2 + 1;  //报错
    b2 = (byte)(b2 + 1); 
    
  2. 有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量 / 精度最大的那种数据,然后再进行计算

  3. ( byte, short )和 char 间不能相互自动转换

  4. byte,short,char 三者可以计算,不管同类型还是不同类型之间,在计算时首先转换为int类型,即 int X = ......

  5. boolean不参与转换

  6. 强制类型转换,将容量大的数据类型转换为容量小的数据类型,强转符号:“( )”,直接舍去超出的内容,差别较大可能会导致结果大不相同 ( 大 —> 小 )

// int x1 = (int)5 * 2.1 + 2 * 5.1;  // 报错,只强转了5
int x2 = (int)(5 * 2.1 + 2 * 5.1);  //输出为20,强转的是计算结果

// char c1 = x2;  //报错,char可以保存int的常量值,但变量值要强转
char c2 = (char)x2;  //输出的话就是20对应的字符
char c3 = 20;  //输出结果同上

String 类型

  1. 将基本数据类型转为 String,直接后加双引号即可
int n = 100;
boolean m= true;

String s1 = n + "";
String s2 = m + "";

System.out.println(s1); //输出 100
System.out.println(s2); //输出true
  1. String 转为基本数据类型 (parse:解析)

(前提是不能出现字母转数字的情况,否则虽然会通过编译,但运行直接抛异常)

String s = "zhuyazhu";
int n = Integer.parseInt(s);
Double.parseDouble()
Float.parseFloat()
Long.parseLong()
Byte.parseByte()
Boolean.parseBoolean()
Short.parseShort()
s.charAt(0) //取字符串的第一个字符 'z'
  1. String 可用 + 拼接,但 char 拼接后得到的是前后字符码的和
char c1 = 'a';
char c2 = 'b';
System.out.println(c1 + c2);//输出为195,(非真正拼接,而是int计算)