社区
非技术区
帖子详情
走过路过的JAVA的菜鸟老鸟们进来看看!如能帮忙的立马给分。
wjg259675
2005-03-21 12:30:24
各位Java的爱好者们,我有一事相求:
哪位好心的朋友能给我发来“JAVA由易到难的实例”,我在这不胜感激了
我是Java的爱好者也是初学者,书是看了,书上的题也看的懂,就是要自己动手编程时,就感到
力不从心。
我想这还是与我动手能力有关,在此想求一些JAVA的一些由易到难的实例看看。
有下载的网址的,可以发给我,要是哪位自己电脑上存的有的话,请这位朋友好心帮忙一下,发到我的信箱里,谢谢了!
信箱:wjg-20100@126.com
...全文
161
9
打赏
收藏
走过路过的JAVA的菜鸟老鸟们进来看看!如能帮忙的立马给分。
各位Java的爱好者们,我有一事相求: 哪位好心的朋友能给我发来“JAVA由易到难的实例”,我在这不胜感激了 我是Java的爱好者也是初学者,书是看了,书上的题也看的懂,就是要自己动手编程时,就感到 力不从心。 我想这还是与我动手能力有关,在此想求一些JAVA的一些由易到难的实例看看。 有下载的网址的,可以发给我,要是哪位自己电脑上存的有的话,请这位朋友好心帮忙一下,发到我的信箱里,谢谢了! 信箱:wjg-20100@126.com
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
36387893
2005-04-14
打赏
举报
回复
先试试把书上的例题运行
始终看和写是两回事的
然后试着改改程序
把语法用熟
自然编程就顺手得多了。
wjg259675
2005-04-14
打赏
举报
回复
非常感谢各位的帮助!
hawaii_wx
2005-04-13
打赏
举报
回复
尽量自己多写代码,写多了,自然手就高了
wjvonline
2005-04-13
打赏
举报
回复
突然想起机子上有这么一篇文章不错,发给你看看,看哈有没得啥帮助:
Thinking in Java 读书笔记
第四章 初始化和清除(Initialization&CleanUp)
主要章节内容:
4.1 构建器
4.2 方法过载
4.3 收尾和垃圾收集
4.4 成员初始化
关键词:Constructor,finalize(),初始化顺序
重点整理:
1.构造函数
要点:
构建器(Constructor)属于一种较特殊的方法类型,因为它没有返回值.这与void返回值存在着明显的区别。对于void返回值,尽管方法本身不会自动返回什么,但仍然可以让它返回另一些东西。构建器则不同,它不仅什么也不会自动返回,而且根本不能有任何选择.若创建一个没有构件器的类,则编译器会自动创建一个默认构件器.
2.finalize()和gc()
(1)问题:finalize()函数是干嘛的?Java不是有Garbage Collection(以下简称gc)来负责回收内存吗?
回答:
gc只能清除在堆上分配的内存(纯java语言的所有对象都在堆上使用new分配内存),而不能清除栈上分配的内存(当使用JNI技术时,可能会在栈上分配内存,例如java调用c程序,而该c程序使用malloc分配内存时).因此,如果某些对象被分配了栈上的内存区域,那gc就管不着了,对这样的对象进行内存回收就要靠finalize().
举个例子来说,当java 调用非java方法时(这种方法可能是c或是c++的),在非java代码内部也许调用了c的malloc()函数来分配内存,而且除非调用那个了free() 否则不会释放内存(因为free()是c的函数),这个时候要进行释放内存的工作,gc是不起作用的,因而需要在finalize()内部的一个固有方法调用它(free()).
finalize的工作原理应该是这样的:一旦垃圾收集器准备好释放对象占用的存储空间,它首先调用finalize(),而且只有在下一次垃圾收集过程中,才会真正回收对象的内存.所以如果使用finalize(),就可以在垃圾收集期间进行一些重要的清除或清扫工作.
(2)问题:finalize()在什么时候被调用?
回答:
有三种情况
1.所有对象被Garbage Collection时自动调用,比如运行System.gc()的时候.
2.程序退出时为每个对象调用一次finalize方法。
3.显式的调用finalize方法
除此以外,正常情况下,当某个对象被系统收集为无用信息的时候,finalize()将被自动调用,但是jvm不保证finalize()一定被调用,也就是说,finalize()的调用是不确定的,这也就是为什么sun不提倡使用finalize()的原因.
3. this
要点:
this关键字只能在方法中使用,它能为调用该方法的对象提供相应的句柄,使得同一个类产生的不同对象实例在调用同一方法的时候,系统能判断出是哪一个对象在进行调用.
比如:
MyObject a=new MyObject();
MyObject b=new MyObject();
a.f();// (3)
b.f();// (4)
编译器在编译的时候,实际上是将(3),(4)句解释为
MyObject.f(a);
MyObject.f(b);
的,这样就将调用了该方法的对象的信息传到了方法中,也就是传给了this,就可以通过this表示调用该方法的对象实例.
用this的概念还可以解释为什么在静态方法中不能调用非静态方法和元素,这是因为静态方法中没有this,也就是说我们不能获得调用该方法的对象的句柄.既然找不到这个对象实例,我们又怎么能够在其中调用对象实例的方法和元素呢?
那为什么静态方法没有this呢?用静态方法的概念可以来理解这个问题.静态方法是类方法,是所有对象实例公用的方法.它不属于某一个具体的对象实例,因此也无法用this来体现这个实例.这和非静态方法是不一样的.打个比方,在一个局域网内的几个用户每个人都有一台客户机,但都访问一台公共的服务器.对于每台客户机来说,它的this就是使用它的用户.而对于服务器来说,它没有this,因为它是大家公用的,不针对某一个具体的客户.
4.对象初始化
要点:
1.对象只有在创建的时候,需要使用它的时候才进行初始化,否则永远都不会初始化.
2.对象进行初始化是有一定顺序的,无论在定义的时候各个成员的摆放位置如何.首先是静态成员和对象,然后是非静态成员和对象,最后才运行构造器.
3.静态成员和对象有且只有一次初始化过程,这个过程发生在第一次创建对象或者第一次使用类的静态成员和对象的时候.
以一个名为Dog的类为例,它的对象实例初始化过程如下:
(1) 类型为Dog的一个对象首次创建时,或者Dog类的static方法/static字段首次访问时,Java解释器必须找到Dog.class(在事先设好的类路径里搜索)。
(2) 找到Dog.class后,它的所有static初始化模块都会运行。因此,static初始化仅发生一次——在Class对象首次载入的时候。
(3) 创建一个new Dog()时,Dog对象的构建进程首先会在内存堆(Heap)里为一个Dog对象分配足够多的存储空间。
(4) 这种存储空间会清为零,将Dog中的所有基本类型设为它们的默认值
(5) 进行字段定义时发生的所有初始化都会执行。
(6) 执行构建器。正如第6章将要讲到的那样,这实际可能要求进行相当多的操作,特别是在涉及继承的时候
5.数组的初始化
数组包括基本数据类型数组和对象数组,其中对于对象数组的初始化,经常会出现"Exception"错误.比如下面的程序
问题代码如下:
public userInfo[] getUsersInfo() {
userInfo[] usersInfo=null;
if (users.size()!=0) {
usersInfo=new userInfo[users.size()];
for(int i=0;i< usersInfo.length;i++) {
//+-------------------出问题的地方-----------------
usersInfo[i].name=((User)(users.elementAt(i))).name;
usersInfo[i].type=((User)(users.elementAt(i))).type;
usersInfo[i].userID=((User)(users.elementAt(i))).userID;
//+-------------------出问题的地方-----------------
}
System.out.println("here");
return usersInfo;
}else {
return null;
}
}
其中userInfo的定义为
class userInfo{
userInfo(String name,int type,int userID){
this.name=name;
this.type=type;
this.userID=userID;
}
String name;
int type;
int userID;
}
运行到程序中标出的问题区域时,系统显示NullPointerException,为什么会这样呢?
这是因为,Java在定义数组的时候
usersInfo=new userInfo[users.size()];
并没有给数组元素分配内存,它只是一个句柄数组,数组中的对象还没有初始化.因此数组中的每个对象都需要new之后才可以访问.例如:
A[] a=new A[2];
for(int i=0;i<2;i++)
a[i] = new A();
这样才能a[i].someMethod()
因此上面的程序应该改为
public userInfo[] getUsersInfo() {
userInfo[] usersInfo=null;
if (users.size()!=0) {
usersInfo=new userInfo[users.size()];
for(int i=0;i< usersInfo.length;i++) {
//+-------------------修改的地方-----------------
usersInfo[i]=new userInfo(((User)(users.elementAt(i))).name,
((User)(users.elementAt(i))).type,
((User)(users.elementAt(i))).userID);
}
//+-------------------修改的地方-----------------
return usersInfo;
}else {
return null;
}
}
就没问题了
wjvonline
2005-04-13
打赏
举报
回复
1楼的说的8错,偶想楼主可能没学数据结构吧?要不偶想你不会感到力不从心。
如果没学还来得及,找本书学学,不用钻太深,偶想你会找到写程序的感觉的 ^_^
java的书嘛,偶推荐你看机械工业出的那套上、下册的(好象都出到第4版了),偶觉得买本上册看看就行了,然后看Thinking in java,偶觉得每次看都有不同的感受,例子太经典,必看!
你可以去这里找一些源码,偶觉得资源还是蛮多的:
http://www.javaresearch.org (这网站不能用专门的下载软件下!狂晕!偶一般都晚上下^_^)
http://www.java-cn.com
对了,偶有Thinking in java的源码,不过注释是E文的,你要不?
woanon
2005-04-13
打赏
举报
回复
帮忙up把
wjg259675
2005-04-13
打赏
举报
回复
我给了这么多的分,竟没人回
这帖子我都没法结了。请各位朋友献计献策,让这帖子早点结了
apollo333
2005-03-21
打赏
举报
回复
JAVA在了解了一般的语法以后,就要熟悉它的API类库,传统上来说看它的TUTORIAL里的例子就行,网上就有。还有,看HOW TO这样的东西(TUTORIAL里有),或者是COOKBOOK这样的书。都是关于怎样合理使用它的类库的。
mac215
2005-03-21
打赏
举报
回复
这个。。。有这个书吗?
先找一些简单例做一做就好了。
想踏实一点的话,找本大学的数据结构,上面的练习一题一题地做过来,绝对由易到难。
哈哈,最简单的一个HelloWorld,俺可以写出来
Class Hello {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
java
菜鸟
写博客
作为一位初入
Java
开发领域的
菜鸟
,我在日常工作中遇到了诸多问题,并通过不断学习和求助于前辈的经验来解决问题。本博客将
分
享一些我在实践中遇到的问题及解决办法。
给
菜鸟
看的Android应用开发全流程
本文为Android应用开发新手提供从准备到发布的全流程指南,包括技能储备、工具准备、开发流程、打包发布等内容,帮助
菜鸟
们顺利完成完整开发流程。
[社招][杭州]阿里
菜鸟
P6 可帮内推,期待你的加入~
菜鸟
技术团队致力于全国24小时必达,全球72小时必达的物流使命,现招聘核心开发人员,要求精通
Java
、JVM、缓存、
分
布式架构等技术,具备良好团队协作能力。
JAVA
入门级错误
遇到使用Notepad++编译
Java
代码时出现GBK编码问题,通过修改编码设置为ANSI成功解决。
分
享解决编码问题的经验,帮助
菜鸟
程序员避免类似困扰。
从你的全世界
路过
-从此又诞生了一个小码
菜鸟
本文详细介绍了while循环和do-while循环的概念、特点及使用场景,并通过具体实例展示了如何在程序中应用这两种循环结构。
非技术区
23,404
社区成员
70,506
社区内容
发帖
与我相关
我的任务
非技术区
Java 非技术区
复制链接
扫一扫
分享
社区描述
Java 非技术区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章