最近学习Java有了一些小收获,不成体系,在此记录。
1.Eclipse的源码体系结构
这里只提最基础的,毕竟刚开始学习。
首先需要新建一个Java project,一个project中可能会有多个package,包中是源码,也就是以.java结尾的文档,这其中就是类。一个.java的文档中可以有多个类,但是只能有一个公共类,且公共类的名字要与文档名相同。一个包中可以有多个.java的文档。
2.一个包中可以有多个.java的文档,而且每个都可以有一个main方法。
3.Java的数据类型分为两大类,包括基础数据类型和引用类型。
基础数据类型就是常说的八种,byte,short,int,long等等,但是要注意的是,Java不像C++那样没有严格指定数据的长度,而是规定死了,不需要为硬件平台的兼容担心。
注意,Boolean类型的不允许用数字转换,只有true和false。
4.类是对象的抽象。
1 2 3 4
| class Clothes { String color; char size; }
|
声明一个类,然后就可以让类为模板创建对象。
1
| Clothes c1 = new Clothes();
|
注意,这里分两步。在堆上先new一个Clothes对象,然后将c1这个“门牌号”参考到新的对象/实例上。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| class Clothes2{ String color; char size; Clothes2(String color,char size){ this.color = color; this.size = size; } }
public class Field2{ public static void main(String[] args){ Clothes2 sun = nes Clothes2("red",'S'); Clothes2 spring = nes Clothes2("green",'M'); System.out.printf("sun (%s, %c)%n",sun.color,sun.size); System.out.printf("green (%s, %c)%n",green.color,green.size); } }
|
关于构造函数,我还没深入了解。
5。关于java.util.BigDecimal
在程序中,基本数据类型数字总是不能精确表示,但是可以使用BigDecimal类。
BigDecimal类提供了许多操作数字的方法,具体参考API文档。
1 2 3 4 5 6 7 8 9 10
| import java.math.BigDecimal;
public class DecimalDemo{ public staic void main(String[] args){ BigDecimal operand1 = new BigDecimal("1.0"); BigDecimal operand2 = new BigDecimal("0.8"); BigDecimal result = operand1.subtract(operand2); Syatem.out.println(result); } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| import java.math.BigDecimal;
public class DecimalDemo{ public staic void main(String[] args){ BigDecimal operand1 = new BigDecimal("0.1"); BigDecimal operand2 = new BigDecimal("0.1"); BigDecimal operand3 = new BigDecimal("0.1"); BigDecimal result = new BigDecimal("0.3"); if(operand1.add(operand2).add(operand3).equals(result)){ System.out.println("等于0.3"); }else{ System.out.println("不等于0.3"); } } }
|
结果是等于!
1 2 3
| BigDecimal operand1 = new BigDecimal("0.1"); BigDecimal operand2 = new BigDecimal("0.1"); System.out.println(operand1==operand2);
|
这将显示false!
问题在于,=一般是用于指定参考名称参考到某个对象,意思是,operand1这个名字参考到BigDecimal("0.1"),一个堆内存空间(BigDecimal("0.1"))的标签。而==的意思是比较两个参考的对象是否是同一个,不是比较内容的值,也可以换个理解方式,operand1这个标签的值就是BigDecimal("0.1"),这种说法很不严谨。这里创建了两个对象,具有不同的标签,虽然他们的属性(“0.1”)是一样的。如果要比较内含值,则这样:operand1.equals(operand2).
6.基本类型打包器
在Java中一切都是对象,出来基本数据类型,这是为了效率留下来的,但是有的时候我们想依据这些基本数据类型打包一些操作(方法)给它,这样它就成为了对象。这里需要用到基本类型打包器。
它的用处简单说就是把基本数据变成对象,使其可以带有方法。有Long,Integer,Double,Float,Byte等。
1 2 3 4 5 6 7 8 9 10 11
| public class IntegerDemo{ public static void main(String[] args){ int data1=10; int data2=20; Integer wrapper1=new Integer(data1); Integer wrapper2=new Integer(data2); System.out.println(data1/3); System.out.println(wrapper1.doubleValue()/3); System.out.println(wrapper1.doubleValue(wrapper2)); } }
|
打包器可以自动装箱也可以自动拆箱:
1 2
| Integer wrapper=10; int foo=wrapper;
|