用了几年c语言,很多习惯都离不开c语言的思想.
学java对类有几个好想不懂的问题.
变量我第一时间就想起 作用域,存放在内存那里等等问题.
感觉java和c语言差别太大了.毕竟作为高级语言和中级语言的一个鸿沟吧..看android代码很多变量都想不懂他的作用域.
举例:public class HandlerTest extends Activity
{
/*
...
..
.
*/
public void onCreate(Bundle savedInstanceState)
{
/*
...
..
.
*/
Handler myHandler = new Handler(){
/*
...
.. handleMessage
.
*/
};
Thread(new myThread ).start();
}
public class myThread implements Runnable{
public void run() {
myHandler.sendMessage()
//用myHandler发送数据
}
}
}1, 我新创建一个线程,这个线程里面还可以访问myThread为什么?
2, 不是已经分别是连个线程了么?数据还共享?
3, 两个类之间数据是什么关系?看过<java语言程序设计基础篇>.但是觉得里面没说到数据作用域的问题.
呵呵,虚心请教....
学java对类有几个好想不懂的问题.
变量我第一时间就想起 作用域,存放在内存那里等等问题.
感觉java和c语言差别太大了.毕竟作为高级语言和中级语言的一个鸿沟吧..看android代码很多变量都想不懂他的作用域.
举例:public class HandlerTest extends Activity
{
/*
...
..
.
*/
public void onCreate(Bundle savedInstanceState)
{
/*
...
..
.
*/
Handler myHandler = new Handler(){
/*
...
.. handleMessage
.
*/
};
Thread(new myThread ).start();
}
public class myThread implements Runnable{
public void run() {
myHandler.sendMessage()
//用myHandler发送数据
}
}
}1, 我新创建一个线程,这个线程里面还可以访问myThread为什么?
2, 不是已经分别是连个线程了么?数据还共享?
3, 两个类之间数据是什么关系?看过<java语言程序设计基础篇>.但是觉得里面没说到数据作用域的问题.
呵呵,虚心请教....
然后找Android教程学一下线程基础
用一周时间就搞定!!
就是内部内的问题,我现在自个去查一下这方面的东东.java已经看了快3个星期了,大概都有点概念.就是android编程的时候
发现这问题,想提出来问问而已.
毕竟知道对这个问题有不理解,但是不知道应该去找那方面的知识点.
感觉不太可能,毕竟习惯了面向过程编程.不是一下子就可以转变到面向对象编程...
其实基本语法感觉差不多(以前接触过c++)只不过有些细节问题不太清楚.
毕竟以前没专门学过java
1, 我新创建一个线程,这个线程里面还可以访问myThread为什么?
线程之间为什么不能互相访问?你要区别线程和进程!线程都在同一地址空间中,编译后变量的相对地址彼此都是已知的。它不像进程与进程间,基地址不明确,所以就不能互相访问。
2, 不是已经分别是连个线程了么?数据还共享?
同上,数据肯定能共享啦
3, 两个类之间数据是什么关系?
就是struct,连续的内存块我觉得lz的问题应该是对内部类不理解,其实你不明白的这句:
myHandler.sendMessage()
完整书写应该是:
HandlerTest.this.myHandler.sendMessage()
注意,是通过this指针,所以是实例方法而不是类方法,所以是非静态的
至于如何确定this指针呢?因为是内部类,所以类生成实例的之后,通过父类实例再生成内部类的实例的时候,内部类就能获取父类的this指针
是的!已经看了...thinking in java 有一章讲内部类,十分详细!!!