java动手动脑

简介: Java动手动脑1.Ø 早期我们经常这样定义变量           int value=100;Ø 前面的示例中这样定义变量           MyClass obj = new MyClass();Ø 这两种方式定义的变量是一样的吗?这两个方式定义是一样的,都是类的实例化,只不过第一个是简便的写法。

Java动手动脑

1.

  • Ø 早期我们经常这样定义变量

           int value=100;

  • Ø 前面的示例中这样定义变量

           MyClass obj = new MyClass();

  • Ø 这两种方式定义的变量是一样的吗?

这两个方式定义是一样的,都是类的实例化,只不过第一个是简便的写法。第二个是正常定义对象的方式。

2.

  • Ø  对象变量也可以使用“==”判断两变量值是否相等吗?
1.判断两个对象是否是同一个引用对象则用==,"=="比的是地址.因为如果地址相同,则就是同一个对象

2.obj1.equals(Object obj2),用来判断两个对象是否相等(前面给出的是相等的情况。如果你要不相等的话:!obj1.equals(Object obj2)就OK了)

3.

 

 

 请总结一下,这个方法有哪些“与众不同之处”,你能列出几条?

1. 方法名是类名

2. 没有方法的类型

4.以下代码为何无法通过编译?哪儿出错了?

 

 

Foo类重构了构造函数,但是没有写无参的构造函数。所以在主函数中声明对象时,调用无参构造函数失败,报错。

5. public class InitializeBlockDemo {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

      

       InitializeBlockClass obj=new InitializeBlockClass();

       System.out.println(obj.field);

      

       obj=new InitializeBlockClass(300);

       System.out.println(obj.field);

    }

 

}

 

class InitializeBlockClass{

    //下面这句在初始化块之前与之后,会影响到field字段的初始值

    //public int field=100;

   

    {

        field=200;

    }

    public int field=100;

    public InitializeBlockClass(int value){

       this.field=value;

    }

    public InitializeBlockClass(){

      

    }

}

输出结果为:100 300

java进行初始化的地方有两个:初始化块和构造函数,其中初始化块又分为静态初始化块和实例初始化块。静态初始化块是类中由static修饰的初始化块,实例初始化块为类中没有任何关键字修饰的初始化语句。

如果在主函数中创建对象时没有形参时,如果在类中定义了公共的变量并给与了赋值,那么就会把值赋给主函数中的变量,再调用类中的默认构造函数,如果在主函数中创建对象时有形参,则调用类中对应的构造函数。

6.

  • Ø 静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)?

在静态方法中访问类的实例变量需首先进行类的实例化

package Text1;

 

public class JingTaiHanShu {

     int x = 3;

     static int  y = 4;

     public static void Method()//静态方法

      {  

       System.out.println("实例变量x = " + new JingTaiHanShu().x);/    System.out.println("静态变量y = " + y);     }

 

     public static void main(String[] args)

        {

        JingTaiHanShu.Method();

        JingTaiHanShu ex = new JingTaiHanShu();

            System.out.println("x = " + ex.x);

        }

}

输出结果:静态变量y = 4

x = 3

 

目录
相关文章
|
Java
Java动手动脑——多态和继承
Java动手动脑——继承和多态 实验一     预估输出答案:100  200  201  202 输出结果:100  200  201  202 输出答案分析:100 创建parent类的对象,调用对象的方法 200 创建chlid类的对象,调用对象的方法 把child对象赋值给parent,输出child对象的值 强制转换parent为Child对象,输出 实验二 在子类中,若要调用父类中被覆盖的方法,可以使用super关键字。
928 0
|
Java
java动手动脑——异常处理
Java07异常处理动手动脑 异常处理的基本知识  Java异常处理通过5个关键字try、catch、throw、throws、finally进行管理。
1133 0
|
11月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
573 1
|
11月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
503 1
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
Java 数据库 Spring
515 0
|
算法 Java
Java多线程编程:实现线程间数据共享机制
以上就是Java中几种主要处理多线程序列化资源以及协调各自独立运行但需相互配合以完成任务threads 的技术手段与策略。正确应用上述技术将大大增强你程序稳定性与效率同时也降低bug出现率因此深刻理解每项技术背后理论至关重要.
681 16
|
缓存 并行计算 安全
关于Java多线程详解
本文深入讲解Java多线程编程,涵盖基础概念、线程创建与管理、同步机制、并发工具类、线程池、线程安全集合、实战案例及常见问题解决方案,助你掌握高性能并发编程技巧,应对多线程开发中的挑战。
|
数据采集 存储 前端开发
Java爬虫性能优化:多线程抓取JSP动态数据实践
Java爬虫性能优化:多线程抓取JSP动态数据实践
|
Java API 调度
从阻塞到畅通:Java虚拟线程开启并发新纪元
从阻塞到畅通:Java虚拟线程开启并发新纪元
573 83