Day03-Java的常识,数据类型以及运算符
注释
良好的代码书写规范是从写注释开始的
单行注释 | // |
---|---|
多行注释 | /**/ |
文本注释 | /** */ |
/***
* .,, .,:;;iiiiiiiii;;:,,. .,,
* rGB##HS,.;iirrrrriiiiiiiiiirrrrri;,s&##MAS,
* r5s;:r3AH5iiiii;;;;;;;;;;;;;;;;iiirXHGSsiih1,
* .;i;;s91;;;;;;::::::::::::;;;;iS5;;;ii:
* :rsriii;;r::::::::::::::::::::::;;,;;iiirsi,
* .,iri;;::::;;;;;;::,,,,,,,,,,,,,..,,;;;;;;;;iiri,,.
* ,9BM&, .,:;;:,,,,,,,,,,,hXA8: ..,,,.
* ,;&@@#r:;;;;;::::,,. ,r,,,,,,,,,,iA@@@s,,:::;;;::,,. .;.
* :ih1iii;;;;;::::;;;;;;;:,,,,,,,,,,;i55r;;;;;;;;;iiirrrr,..
* .ir;;iiiiiiiiii;;;;::::::,,,,,,,:::::,,:;;;iiiiiiiiiiiiri
* iriiiiiiiiiiiiiiii;;;::::::::::::::::;;;iiiiiiiiiiiiiiiir;
* ,riii;;;;;;;;;;;;;:::::::::::::::::::::::;;;;;;;;;;;;;;iiir.
* iri;;;::::,,,,,,,,,,:::::::::::::::::::::::::,::,,::::;;iir:
* .rii;;::::,,,,,,,,,,,,:::::::::::::::::,,,,,,,,,,,,,::::;;iri
* ,rii;;;::,,,,,,,,,,,,,:::::::::::,:::::,,,,,,,,,,,,,:::;;;iir.
* ,rii;;i::,,,,,,,,,,,,,:::::::::::::::::,,,,,,,,,,,,,,::i;;iir.
* ,rii;;r::,,,,,,,,,,,,,:,:::::,:,:::::::,,,,,,,,,,,,,::;r;;iir.
* .rii;;rr,:,,,,,,,,,,,,,,:::::::::::::::,,,,,,,,,,,,,:,si;;iri
* ;rii;:1i,,,,,,,,,,,,,,,,,,:::::::::,,,,,,,,,,,,,,,:,ss:;iir:
* .rii;;;5r,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,sh:;;iri
* ;rii;:;51,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.:hh:;;iir,
* irii;::hSr,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,sSs:;;iir:
* irii;;:iSSs:.,,,,,,,,,,,,,,,,,,,,,,,,,,,..:135;:;;iir:
* ;rii;;:,r535r:...,,,,,,,,,,,,,,,,,,..,;sS35i,;;iirr:
* :rrii;;:,;1S3Shs;:,............,:is533Ss:,;;;iiri,
* .;rrii;;;:,;rhS393S55hh11hh5S3393Shr:,:;;;iirr:
* .;rriii;;;::,:;is1h555555h1si;:,::;;;iirri:.
* .:irrrii;;;;;:::,,,,,,,,:::;;;;iiirrr;,
* .:irrrriiiiii;;;;;;;;iiiiiirrrr;,.
* .,:;iirrrrrrrrrrrrrrrrri;:.
* ..,:::;;;;:::,,.
*/
数据类型
强类型语言
要求使用的变量严格符合规范,所有变量都需要定义后才能使用,Java属于强类型语言
弱类型语言
对于使用的变量不严格规范,如js中‘12’+3可以为123或者‘123’,但需要在编译器上做好规范
关键字
Java的组成部分名字,不可用于设置变量名或者方法名
标识符
-
以美元符号($),下划线(_),字母开头,用于给方法和变量命名
-
大小写敏感
-
不可以使用关键字来命名
Java的数据类型
基本类型(primitive type)
byte | 1个字节 | ||
---|---|---|---|
short | 2个字节 | ||
整数类型 | int | 4个字节 | |
数值类型 | long | 8个字节 | |
float | 4个字节 | ||
浮点类型 | double | 8个字节 | |
字符类型 | char | 2个字节 | |
布尔类型 | ture | false | 只占1位 |
字节与位
位(bit):计算机内部存储数据的最小单位
字节(byte):计算机处理数据的基本单位,一般用大写的B表示
字符:指计算机中的使用的字符,文字,数字等
1B = 8bit
public class Main{
public static void main(String[] args){
//Java八大基本数据类型
byte a = 1;
short b = 2;
int c = 3;
long d = 4L; //long类型需要在末尾增加L来表示数据类型
float e = 1.5F;//理由同上
double f = 3.14259631;
char g = 'a'; //当其中数量超过1个时,错误
String h = 'abv'; //String不是关键字,而是一个类,不属于八大数据类型
boolean i = 1; //布尔型只有对错
}
}
引用类型
- 接口
- 类
- 数组
数据类型扩展
整数扩展:进制表示方式
二进制 | 0b |
---|---|
八进制 | 0 |
十六进制 | 0x |
浮点数扩展:银行业务表示方式
public class Main{
public static void main(String[] args){
float a = 0.1f; //0.1
float b = 1/10; //0.1
System.out.println(a==b); //结果是false
float c = 23245615313f;
float d = c+1;
System.out.println(c==d); //结果是ture
}
}
以上结果原因是:
float是有限但离散的,存在一个舍入误差,应当避免使用浮点数进行比较
解决方案:
BigDecimal()类
字符类型扩展:所有的字符本质仍是数字
public class Main{
char a ='a';
char b ='中';
char c ='\u0061'
System.out.printlnl(c); //输出的是a
System.out.printlnl((int)a); //输出一个数字
}
布尔数据类型扩张:if判断
public class Main{
public static void main(String[] args){
boolean flag = ture;
if(flag){
System.out.println("当flag为ture时,执行此句代码")
}
}
}
转义字符
\t:制表符
\n:换行
类型转换
Java是强类型语言,所以运算的时候需要进行类型转换
从高数据类型转换为低数据类型时,需要进行强制转换如:
public class Main{
public static void main(String[] args){
int a = 128;
byte b = (byte)a;
float c = 1.456F;
int d = int(c)
System.out.println(b);//因为128大于byte型的数值范围,所以发生内存溢出
System.out.println(c);//输出1,小数位丢失
}
}
注意点
- 不要转换两个不相干的数据类型
- 不要转换布尔类型
- 强制转换时,需要注意内存溢出问题
- 浮点数与整数相互转换时,会有精度问题
JDK7新特性
可以用下划线对数字进行划分,数值不变,便于查看
int a = 10_0000_0000;
变量
Java是强类型语言,所有需要变化的量应该定义
Java变量是程序中最基本的存储单元,要素有三:
- 变量名
- 变量类型
- 作用域
变量的三种类型
- 类变量
- 实例变量
- 局部变量
public class Main{
static int a = 1; //类变量,增加static修饰符
String name;//实例变量不初始化,一般输出默认值,从属于对象
public static void main(String[] args){
int b;
System.out.println(a);//可直接输出1
System.out.println(b);//报错,局部变量应当定义且初始化
Main a = new Main();
System.out.println(a.name);
//布尔型的默认值为false
}
}
常量
在程序过程中,初始化后不可改变
final int a = 1;
修饰符
static final 修饰符先后顺序不影响
命名规范
- 遵循驼峰原则,即除第一个单词外,其余单词首字母大写如lastName
- 类名首字母大写
- 常量使用大写字母和下划线表示
自增自减运算符
public class Main{
public static void main(String[] args){
int a =3;
int b =a++; //执行完代码后,先给b赋值,在自增
int c =++a; //先自增,再给a赋值
System.out.println(a); //输出3
System.out.println(b); //输出3
System.out.println(c); //输出5
}
}
逻辑运算符
输出的值为布尔类型
位运算符
二进制计算,效率极高
2*8最快的方式
2x2x2x2
System.out.println(2<<3);
/*
0000 0000 0
0000 0010 2
0000 0100 4
0000 1000 8
往左移动三位相当于2*3
*/
字符串连接符
public class Main{
public static void main(String[] args){
int a = 10;
int b = 20;
System.out.println(""+a+b);//此时输出1020
System.out.println(a+b+"");//此时输出30
}
}
原因:
当数的前面出现字符串类型 时,将会自动将后面得数转换为字符串类型,如果是在两数后面出现则不影响
条件运算符
x ? y :z
如果x==true,结果返回y,否则返回z
public class Main{
public static void main(String[] args){
int score = 100;
String result = score>90 ? "面试成功":"回家养猪"
System.out.println(result);
}
}