java编程思想-java基本概论

package com.company;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Date;

public class Main {

    public static void main(String[] args) {
	// write your code here
        Main m=new Main();
        Circle circle1;//新建一个引用,但是没有关联对象,现在是一个空指针,这样的引用不能直接用
        Circle circle=new Circle();//新建引用,并新建对象,最后将他们关联起来
        String s="123";//同上,相当于新建并给给对象赋值了
        m.multiState(circle);//函数参数是shape,但是传入的是circle,这体现了多态。因为只要是shape的子类,必定含有shape的方法
        /*java消除了前向引用的问题,尽管multiState的定义在后面*/
        /*shape1和shape2共用一个存储空间,可以通过对象来定位它*/
        Shape shape1=new Shape();
        Shape shape2=new Shape();
        Shape.a=1;
        System.out.println(shape1.a);
        System.out.println(shape2.a);
        Shape.a++;
        System.out.println(shape1.a);
        System.out.println(shape2.a);

        System.out.println("Hello,it's");
        System.out.println(new Date());//创建了一个Date类型的对象,并将其转化为字符串类型。这行执行结束后,java就会自动回收这个对象占用的内存
        System.getProperties().list(System.out);
        System.out.println(System.getProperty("java.vm.name"));

    }
    //返回类型为void的时候,return只用于退出方法
    void multiState(Shape shape/*参数中没有传递对象,而是传递对象的引用*/){//方法名和参数列表统称为方法签名,签名是方法的唯一标识。方法就是向对象发送消息,面向对象可以总结为:向对象发送消息
        char c='x';//基本数据类型存放在栈区,不用担心空指针的问题,不是对象,不能进行对象的操作
        Character ch = new Character('x');/*基本数据类型的包装类*/
        Character ch1 = new Character(c);/*基本类型转化成包装类型,自动装箱*/
        char c1=ch;/*包装类型转化为基本类型,自动拆箱*/
        BigInteger bigInteger;//一种用于高精度的包装类型,不过没有对应的基本类型
        BigDecimal bigDecimal;//同上
        {//x的作用域在这个花括号里面,作用域以花括号为界
            int x;
            {
                //int x=1;这里尽管在c语言中合法,但在java中是不合法的,编译器会报错。c语言中,里面的会覆盖外面的,但这种设计会导致程序混乱
            }
            Shape shape2=new Shape();//在这里创建了一个对象,他的作用域在花括号内,他的生命周期一直存在,只要程序员需要,它可以一直活下去。
            /*垃圾收集器:尽管不受干扰下的对象的生命周期是无尽的,但是java的垃圾收集器会检查所有new出来的对象,并判断哪些不再可达,
            若不可达,则把它占用的空间释放,这样就避免了内存泄漏问题*/
        }


    }
}
class Shape{
    /*字段field*/
    int i=0;/*基本类型,所有基本类型的默认值都是0(除了boolean),但是为了安全,最好显式得初始化变量
    但这种默认值并不适用于局部变量,因为局部变量并不是类的字段,因此局部变量没有默认值*/
    boolean j=false;/*默认值false*/
    String k="a123456";/*引用类型*/
    static int a=0;
    /*方法method*/
    void erase(){
        int x;
    }
    void back(){
        erase();//非静态方法可以调用静态字段和方法
        move();
    }

    /*java中所有的代码都是写在类里面的*/
    /*创建对象才能使用的方式在以下两种情况下是不足的,1,只想为特定指端分配一个空间,不想去创建对象 2,即是没有创建对象,也能调用该方法
    * 静态就意味着该字段和方法不依赖任何特定的对象实例*/
    static void move(){
        go();
        //erase();这句是错误的,静态方法使用之前不需要创建对象,因此不能直接调用非静态成员和方法(因为非静态成员和方法只能先实例化才能使用)
    }

    static void go(){

    }
}/*创建了一个类,这决定了它的对象的外观与行为*/
class Circle extends Shape{

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值