java学习之旅(day.03)
整数拓展: 进制
二进制:以0b开头
十进制:我们生活中的正常数 int i=10
八进制:以0开头 int i=010
十六进制:以0x开头 0~9 A~F int i=0x10
浮点数拓展:
float f=0.1f;
double d=10./10;
System.out.println(f==d); //判断f是否等于d false
是有限的、离散的、存在舍入误差(相除除不尽的时候会取一个约等于值)、接近但不等于。
所以最好完全避免使用浮点数比较
字符拓展
char c1='a';
char c2='中';
System.out.println((int)c2);
//所有字符本质还是数字,可强制转换
//转义字符:
\t 制表符 System.out.println(hello\tworld); hello world
\n 换行 System.out.println(hello\nworld); hello world
布尔值拓展
blllean flag=true;
if (flag==true){} //新手
if(flag){} //老手 这两行代码是完全相同的
补充:进制转换
十进制转换为二进制:求商取余法:即十进制数除以2,取余数,直到商为0时,余数由下往上写即为对应的二进制数

二进制转换为十进制:二进制数按圈展开即为十进制数

如110=1* 2E2+ 1* 2E1+ 0*2E0
八进制数转二进制数
八进制数先除以2取余数法,得到二进制数,对每个八进制为三个二进制,不足时左边补0

二进制转八进制:返过去

其他进制转换原理类似 进制转换
类型转换
低=================================高
byte ,short, char —int—long—float—double
小数的优先级大于整数
运算中,不同类型的数据先转化为同一类型,然后进行运算
强制类型转换(由高到低) (类型)变量名
int i=128;
byte b=(byte)i ; //要考虑内存溢出
自动类型转换(由低到高) double b1=i;
注意事项:
-
不能对布尔值进行转换
-
不能把对象类型转换为不相干的转换
-
在把高容量转换为低容量的时候,采用强制转转;反之,直接转换。
-
转换的时候要考虑到内存溢出或精度问题(如浮点数转到整数:2.36—2,会自动取整(int)23.7=23)。
//操作比较大的数的时候,要考虑溢出 //JDK7新特性:数字之间可以用下划线进行分割,不影响数字 int money =10_0000_0000; int years =20; int total =money*years; System.out.println(total); //-1474836480 计算时溢出 //若改为long接收: long total1 =money*years; System.out.println(total1); //-1474836480 依旧溢出,计算时默认money和years是整型,计算完成时再转long,(计算结果是整型,在转long时已经溢出了) //可以改为: long total2=money*((long)years);
变量
变量:可以变化的量
java是一种强类型语言,每个变量都必须声明其类型
java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
type varname [=value];
//数据类型 变量名 =值;
type varname [=value];
//数据类型 变量名 =值;
可以使用逗号隔开来声明多个类型变量,但不建议这样用。
如:
int a=1,b=2,c=3;//一般不这样写
int a=1;
int b=2;
int c=3; //而应写成这样
注意:
- 每个变量都有类型,可以是基本类型,也可以是引用类型。
- 变量名必须是合法的标识符。
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束
变量作用域
类变量:写在类里面的
实例变量:写在方法外,类之内
局部变量:写在方法里面的
public class Variable{
static int allclicks=0; //类变量,有static这个关键词
String str="hello world"; //实例变量,无关键词
publi void method(){
int i=0; //局部变量
}
}
public class demo08 {
//类变量 static
static double salary=2500;
//实例变量:从属于对象(类),可以不初始化就能用,如果不初始化,这个类型默认值:0,0.0
//布尔值:默认是false
//除了基本类型,其余的默认值都是null
String name;
int age;
//main方法
public static void main(String[] args) {
//局部变量是在方法内,用之前必须声明和初始化值
//局部变量只在所在的这个括号内有用,括号外无用
int i=10;
System.out.println(i);
//变量类型 变量名 变量值
demo08 demo08=new demo08();
System.out.println(demo08.age);
System.out.println(demo08.name);
//类变量 加一个关键词static
System.out.println(salary);
}
//其他方法
public void add (){
}
}
常量
常量初始化后不能再改变值,不会变动的值。
所谓常量可以理解为一种特殊的变量,其值被设定后,在程序运行过程中不允许被改变
final 常量名=值
final double PI=3014
常量名一般使用大写字符
public class demo09 {
static final double PI=3.14;
//也可以写为 final static double PI=3.14;
//修饰符不存在先后顺序
public static void main(String[] args) {
System.out.println(PI);
}
}
变量的命名规范:
- 所有变量、方法、类名要见名知意
- 类成员变量:首字母小写和驼峰原则:如monthSalary 除了第一个单词以外,后面单词首字母要大写lastName
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线,全部使用大写字母,如果单词过长,加下划线定义。如:MAX_VALUE
- 类名:首字母大写和驼峰原则Man,GoodMan
- 方法名:首字母小写和驼峰原则:run(), runRun()
浙公网安备 33010602011771号