今日份的Java学习

学习的大纲

  • 变量–成员变量,局部变量 ,静态变量
  • 学习要知新而温故.所以碰到现在陌生的,不要急,学下去 会学明白的!
  • 常量(constant),不可改变的量 如 数字 字符 字符串 以及 用final 修饰的 变量 (重点)。
  • 常量的命名规则:全部字母大写,两个单词之间用下划线连接 如 MAX_BIG
  • 基本数据类型(primitive data type), 引用数据类型
  • 不同进制表示形式
  • 长整型数据的声明
  • 浮点数据类型

学习笔记

局部变量(local variable)

定义;方法或语句块内部定义的变量。生命周期是从声明位置开始到方法或语句块执行完毕为止。
注意:局部变量在使用前必须先声明、初始化(赋值)-----那别的变量在这点上有什么特别呢?

成员变量(member variable)

定义:方法外部,类内部定义的变量。
成员变量从属于对象,生命周期伴随对象 始 终。
成员变量如果不初始化,编译器(?)---- 它会自动初始化成该类型的默认初始值,

Int 0
double 0.0
char ‘\u0000’
Boolean false

静态变量(类变量 static variable)

定义:使用static 定义。 从属于类,声明周期伴随类的 始 终 ,从类加载到卸载!

基本数据类型(primitive data type)
  • 数值型
  • 整数类型:byte (1字节), short(2字节), int(4字节, long(8字节)
    • 浮点类型:float(4字节) , double(8字节)
    • 字符型 :char 2字节
  • 布尔型:boolean 1位
引用数据类型(4个字节)用来代表被引用对象的地址

-用来代表被引用对象的地址

进制的表示

十进制:正常表示
八进制 :0(零)开头 如 015(表示15)
十六进制:0x或0X开头 如 0x15(表示15)
二进制:用 0b或0B开头 0b0111101

根据实际情况总结

  • 在对数据进行检查是会涉及到这两方面1.数值大小是否超出对应(声明变量用的,如byte a = 30; 中的byte)数据类型的范围;2.要考虑到整型数据类型默认为int,因此即便用long去声明变量,对该变量的数值进行检查时依旧用的是int的范围作为检查标准,除非在数值后面加上L。

浮点数据类型

  • 浮点数据类型默认为double类型,因此在用float声明变量时,要在其数值后面加F,进行显式说明。
  • 浮点数(float ,double 类型)是不精确的,不能用于比较,特别是一些对数值精确度有特别要求的场合不要使用
  • Java.math包中有BigInteger和BigDecimal两个用于任意精度数值的计算!
  • 如要进行浮点数的比较,请使用BigDecimal!

源代码

  • 用于测试变量的代码

/**

  • 测试变量
  • @author L

*/
public class TestVariable {

int a;//成员变量,从属于对象。   成员变量会自动被初始化
static int size;//静态变量,  从属于类

public static void main(String[] args) {
	int age;//该变量在main方法中声明,就仅能在该方法中使用,就是main后面的{}之间的范围
	age = 18;  //局部变量,从属于方法
	{
		double salary = 3000.0;
	}//语句块,因此salary仅在该语句快中有效;局部变量,从属于语句块
	//int big;
	System.out.println(age);
	//System.out.println(big);
	//System.out.println(salary);   如果不注释掉  ,其报错原因为:salary变量未声明
}

}

  • 用于测试基本数据类型的源代码
    /**
  • 测试基本数据类型(整型变量)
  • @author L

*/
public class TestPrimitiveDataType {
public static void main(String[] args) {
int a = 15;
int b = 015;//以0开头的表示该数字为8进制数,其真正数值(用十进制看)为13
int c = 0x15;//以0x开头的是16进制数
int d = 0b1101;//以0b开头的是二进制数
System.out.println(a);
System.out.println(b);//正常这要显示为十进制数.
System.out.println©;
System.out.println(d);

	//byte age = 300;  报错了  ,数值大小超出了  类型范围
	byte age = 30;
	int population = 2000000000;//整型常量默认为int  类型
	long globalPopulation = 7400000000L;//所以在long类型数值后面要显式的加个L或l。  
    //建议用L
	//根据byte的使用情况可以总结:(笔记中)
}

}

  • 用于测试基本数据类型中浮点型的源代码
    import java.math.*;
    /**
  • 测试基本数据类型中的浮点型
  • @author L

*/
public class TestPrimitiveDataType2 {
public static void main(String[] args) {
//float a = 3.14;报错,浮点型默认数据类型为double
float a = 3.14F;//因此float类型的浮点数要在后面加F。
double b = 3.14;
double c = 314E-2;
System.out.println©;

	float f = 0.1F;
	double d = 1.0/10;
	System.out.println(f==d);//报错,因为浮点数是不精确的 所以在数学上看似相等的f和d在这里并不相等。
	//浮点数是不精确的,一定不要用于比较!例子如下
	
	float d1 = 423432423F;
	float d2 = d1+1;
	if(d1==d2) {
		System.out.println("d1==d2");//实际运行结果是这行,显然是不对的
	}
	else {
		System.out.println("d1!=d2");
	}
	/* java.math这个包下面有  BigInteger和BigDecimal,这两个类可以处理任意
	 	长度的数值,BigDecimal可以实现任意精度的浮点运算,即可以用于比较*/
	
	System.out.println("#######################");
	BigDecimal bd =BigDecimal.valueOf(1.0);//定义bd的值为1.0
	bd = bd.subtract(BigDecimal.valueOf(0.1));//bd减0.1,下面4条同理
	bd = bd.subtract(BigDecimal.valueOf(0.1));
	bd = bd.subtract(BigDecimal.valueOf(0.1));
	bd = bd.subtract(BigDecimal.valueOf(0.1));
	bd = bd.subtract(BigDecimal.valueOf(0.1));
	System.out.println(bd);//结果0.5
	System.out.println(1.0-0.1-0.1-0.1-0.1-0.1);//用默认数据类型进行运算的结果0.5000000000000001
	BigDecimal bd2 = BigDecimal.valueOf(0.1);
	BigDecimal bd3 = BigDecimal.valueOf(1.0/10.0);
	System.out.println(bd2.equals(bd3));
	System.out.println(bd2==bd3);//为什么用‘==’该符号进行比较结果是错的?
	}
}

关于最后一篇代码中的最后的问题我百度到了一个解释,但目前没有看明白,所以将其记入笔记中日后再看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值