04注释标识符数据类型
Java基础01
注释
- 书写注释是一个非常好的习惯!
- 平时写代码一定要注意规范。
- 注释并不会被执行,是给写代码的人看的。
- Java中的注释有三种:
- 单行注释:注释一行文字 //+文字
- 多行注释:注释一段文字 /* 文字*/
- 文档注释:文档注释 /** 文字 */
- 注释换颜色方法:file->Settings->Color Scheme->Java
- Bold 粗体 Italic 斜体
标识符
关键字
- Java所有的组成部分都需要名字、类名、变量名以及方法名都被称为标识
标识符注意点
- 所有的标识符都应该以字母(A-Z或者a-z),美元符($),或者下划线(_)开始
- 首字符之后可以是字母(A-Z或者a-z),美元符($),下划线(_)或数字的任何字符组合(ps:#,%,@,^,&,*……等特殊字符不可以使用)
- 不能使用关键字作为变量名或方法名
- 标识符是大小写敏感的
- 合法标识符举例:age、$salary、_value、_1_value
- 非法标识符举例:123abc、-salary、#abc
- 可以使用中文命名,但是一般不建议这样使用,也不建议使用拼音,很low
数据类型
- 强类型语言
- 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
- 弱类型语言:JB、JS
- Java的数据类型分成两大类
- 基本类型(primitive type)
- 引用类型(reference type)
public class Demo02 {
public static void main(String[] args) {
//八大基本数据类型
//Integer Byte使用ctrl加左键进行查看
//整数
int num1 =10;//最常用
byte num2 =20;
short num3 =20 ;
long num4 =30L;//Long类型要在数字后面加个L
//小数:浮点数
float num5=50.1F;//float类型要在数字后面加个F
double num6 = 3.1415926;
//字符 一个例如’国‘ 'AA'、'中国'就不行,会报错
char name ='A';
// 字符串,String不是关键字,类
String namea = "努力学习的小豪";
//布尔值:是非
boolean flag =true;
//boolean flag =false;
}
}
什么是字节
-
位(bit):是计算机 内部数据 储存的最小单位,11001100是一个八位二进制数。
-
字节(byte):是计算机中 数据处理 的基本单位,习惯上用大写B表示。
-
1B(byte,字节)=8bit(位)
-
字符:是指计算机中使用的字母、数字、字和符号
-
1bit表示1位
-
1Byte表示一个字节 1B=8b。
-
1024B=1KB
-
1024KB=1M
-
1024M=1G
思考:电脑的32位和64位的区别是什么?
- 第一,设计初衷不同。64位操作系统的设计初衷是为了满足机械设计和分析、三维动画、视频编辑和创作,以及科学计算和高性能计算应用程序等领域中需要大量内存和浮点性能的客户需求。
- 第二,要求配置不同。64位操作系统只能安装在64位电脑上(CPU必须是64位的)。同时需要安装64位常用软件以发挥64位(x64)的最佳性能。 32位操作系统则可以安装在32位(32位CPU)或64位(64位CPU)电脑上。当然,32位操作系统安装在64位电脑上,其硬件恰似"大马拉小车":64位效能就会大打折扣。
- 第三,运算速度不同。64位CPU GPRs(General-Purpose Registers,通用寄存器)的数据宽度为64位,64位指令集可以运行64位数据指令,也就是说处理器一次可提取64位数据(只要两个指令,一次提取8个字节的数据),比32位(需要四个指令,一次提取4个字节的数据)提高了一倍,理论上性能会相应提升1倍。
- 第四,寻址能力不同。64位处理器的优势还体现在系统对内存的控制上。由于地址使用的是特殊的整数,因此一个ALU(算术逻辑运算器)和寄存器可以处理更大的整数,也就是更大的地址。比如,Windows Vista x64 Edition支持多达128 GB的内存和多达16 TB的虚拟内存,而32位CPU和操作系统最大只可支持4G内存。
数据类型扩展
整数拓展

public class Demo03 {
public static void main(String[] args) {
//整数拓展: 进制 二进制0b 十进制 八进制0 十六进制0x
int i=10;
int i2=010;//八进制0
int i3=0x10;//十六进制0x
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
}
}
浮点数拓展
Q:银行业务怎样表示钱?
A:利用BigDecimal.
float f=0.1f;//0.1
double d=1.0/10;//0.1
System.out.println(f==d);//==用来比较两者是否相等,输出true或者false,本条命令输出false
System.out.println(f);
System.out.println(d);
float d1 = 21312313132131321321f;
float d2=d1+1;
System.out.println(d1==d2);//true
-
float有限,离散,具有舍入误差,接近但不等于
- 存储方式:在计算机中用4个字节(32位)存储
- 存储格式:SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
- S:符号位
- E:指数位 8位
- M:底数 23位
- 举例
17.625在内存中的存储
首先要把17.625换算成二进制:10001.101
在将10001.101右移,直到小数点前只剩1位:
1.0001101 * 2^4 因为右移动了四位底数:因为小数点前必为1,所以IEEE规定只记录小数点后的就好。所以,此处的底数为:0001101
指数:实际为4,必须加上127(转出的时候,减去127),所以为131。也就是10000011
符号:正数,所以是0综上所述,17.625在内存中的存储格式是:
01000001 10001101 00000000 00000000 -
最好完全避免使用浮点数进行比较。
字符拓展
char c1 ='A';
char c2 ='中';
System.out.println("==========================================================================");
System.out.println(c1);
System.out.println((int)c1);//强制转换 (65=‘A’ )
System.out.println(c2);
System.out.println((int)c2);//强制转换(20013=‘中’ )
// 此处输出的是Ascii码(American Standard Code for Information Interchange, 叫做“美国信息交换标准码”)
//所有的字符本质还是数字
char c3 = '\u0061';// ’\‘转义字符
System.out.println(c3);//(\u0061='a')
//此处输出的是Unicode码
//编码 Unicode 2字节 65536 Excel 2^16=25536
//U0000-UFFFF
ASCII区别、Unicode
- ASCII码
先从最简单的ASCII说起吧,这个大家也熟悉:全名是American Standard Code for Information Interchange, 叫做“美国信息交换标准码”。ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。ASCII码是目前最普及的一种字符编码,它扎根于我们的互联网,操作系统,键盘,打印机,文件字体和打印机等。ASCII表如下:
![IqEsXT.jpg]()
- Unicode编码
为了解决不同国家ANSI编码的冲突问题,Unicode应运而生:如果全世界每一个符号都给予一个独一无二的编码,那么乱码问题就会消失。这就是Unicode,就像它的名字都表示的,这是一种所有符号的编码。
Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。现代操作系统和大多数编程语言都直接支持Unicode。
但是问题在于,原本可以用一个字节存储的英文字母在Unicode里面必须存两个字节(规则就是在原来英文字母对应ASCII码前面补0),这就产生了浪费。那么有没有一种既能消除乱码,又能避免浪费的编码方式呢?答案就是UTF-8
转义字符拓展
//转义字符
//\t 制表符
//\n 换行
//``````
System.out.println("Hello\tworld");
System.out.println("==========================================================================");
String sa =new String("hello world");
String sb =new String("hello world");
System.out.println(sa==sb);
String sc ="hello world";
String sd ="hello world";
System.out.println(sc==sd);//false
//对象 从内存分析
布尔值拓展
//布尔值扩展
boolean flag =true;
if(flag==true){}//新手
if(flag){}//老手
//Less is more! 代码要精简易读




浙公网安备 33010602011771号