Java-Day-2
常用转义字符
代码中只一个 \ 会默认转义(写在 “ ” 里)
-
\t :制表位,可以实现对齐功能,可以看作有一个无形表框( 上下两行长度相差不大 )
-
\n:换行符,仅换代码行的话
-
\\:一个 \,想输出 " \\ " 就要输入四个 \
-
\'':一个 “ ,字符串里输出双引号
-
\':一个 ‘
-
\r:一个回车,光标回到当前行开头,据情况可能会替换前面的字符
( 在 Linux、unix 里 \n 只表示换行,不会回到开始位置,所以要搭配 \r\n )
错误
-
语法错误:无法通过编译
-
业务错误:能编译运行不对
-
环境错误:仅在自己的环境里可以正常运行
注释
-
增加代码可读性
-
常用注释
-
单行注释:// ( Ctrl + / )
-
多行注释:/* 不允许嵌套 */
-
文档注释:注释内容可以被 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]
- 整数类型 [ 占用存储空间 X 字节 ]
- 字符型
- 存放单个字符 ' a '
- char[2]
- 存放单个字符 ' a '
- 布尔型
- 存放 true,false
- boolean[1]
- 存放 true,false
( 暂不拓展 )引用数据类型
- 类( 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字节]
- 小数数据常量默认
- 通常所用
-
浮点数在机器中存放形式: 浮点数 = 符号位 + 指数位 + 尾数位
-
尾数部分可能丢失,造成精度损失( 小数都是近似值 )
-
十进制写法:写 0.XX 小数时,可以省去0,写为 .XX
-
科学计数法: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:
- 包
- 接口
- 类
- 字段
- 构造器(构造方法)
- 成员方法(方法)
- 枚举
- 异常
- 包
- ......
字符类型
- 可以表示单个字符,字符类型是 char,是两个字节,可以存放汉字
(多个字符用字符串 String:双引号)
- 给 char 赋值一个整数(无单引号)的话,就代表其 unicode 码对应的值,例:97 —> a,可( int )强转字符为数字
- 也可赋为某转义字符,输出的则是转义后的结果
- java 中,char 本质就是一个整数,输出时是 unicode 码对应的字符,所以char是可以参与运算的
System.out.println('a' + 10); // 107
-
输出一个赋值字符( 找数字 —> 对应的字符 —> 编码表 ASCII —> 值 )
-
字符类型本质与编码表
-
字符型存储到计算机中,需要将字符对应的码值找出来,如:
- 存储:' 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 的改进,
-
-
布尔类型
- 也叫 boolean 类型,只取 true 和 false,只占一个字节
- 常处于逻辑判断
类型转换
-
当 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);
-
有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量 / 精度最大的那种数据,然后再进行计算
-
( byte, short )和 char 间不能相互自动转换
-
byte,short,char 三者可以计算,不管同类型还是不同类型之间,在计算时首先转换为int类型,即 int X = ......
-
boolean不参与转换
-
强制类型转换,将容量大的数据类型转换为容量小的数据类型,强转符号:“( )”,直接舍去超出的内容,差别较大可能会导致结果大不相同 ( 大 —> 小 )
// 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 类型
- 将基本数据类型转为 String,直接后加双引号即可
int n = 100;
boolean m= true;
String s1 = n + "";
String s2 = m + "";
System.out.println(s1); //输出 100
System.out.println(s2); //输出true
- 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'
- String 可用 + 拼接,但 char 拼接后得到的是前后字符码的和
char c1 = 'a';
char c2 = 'b';
System.out.println(c1 + c2);//输出为195,(非真正拼接,而是int计算)
标签:字符,Java,字节,int,数据类型,char,转义字符,println,byte
From: https://www.cnblogs.com/zhu-ya-zhu/p/17282637.html