明经CAD社区

 找回密码
 注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 5499|回复: 28

Java 自学日记

  [复制链接]
发表于 2012-7-13 13:01 | 显示全部楼层 |阅读模式
本帖最后由 不死猫 于 2012-7-19 11:39 编辑

一直想在学习新知识的时候有个完整的笔记,以后的心得他人可以借鉴.
我相信任何知识只要花费时间和精力就一定能学的好.
发帖子是自我激励的一个好方法.

因为各种原因,现在接触Java开发,零基础,一切从头来.
我的学习习惯一向是从收集资料开始.
 楼主| 发表于 2012-7-13 13:01 | 显示全部楼层
20120712

学习的开始应该是从这天开始算,从电驴下载了李兴华老师的java开发实战经典.pdf和配套视频.

先看完了第一章,计划明天下载开发包.

java原来也是解释型语言,这不和lisp差不多么.
 楼主| 发表于 2012-7-13 13:02 | 显示全部楼层
20120713  上午

上午先到sun公司的官方网站,最后是从这里下载的

http://www.oracle.com/technetwor ... sSourceSiteId=otncn

当然看到我的文章的同学,应该是以后的事情了,版本会升级的.

Windows x86 (32-bit)版本

为了开发方便,我安装了虚拟机XP SP3 32位系统.

下载后按教程安装.设置好系统path.

用记事本写了下面的代码

  1. public class test
  2. {
  3. public static void main (string args[])
  4. {
  5.   system.out.println("hello");
  6. }
  7. }


编译报错,"软件包 system不存在"

原因是大小写的问题

还有上面的string

重新修改

  1. public class test
  2. {
  3. public static void main (String args[])
  4. {
  5.   System.out.println("hello");
  6. }
  7. }
保存为test.java

DOS下javac编译通过

然后用java test命令搞定了第一个java小程序.
 楼主| 发表于 2012-7-13 13:21 | 显示全部楼层
20120713 下午

2.1章的java简单实例,看看就行了,里面的什么换行不换行的不去记,知道能换行就行了.
其中命名规则的大小写和只有一个public class了解一下.

2.2注释 过

2.3 过

2.4 过

2.5 过

2.6 过

2.7练习顺手写了一下
  1. public class test
  2. {
  3.         public static void main (String args[])
  4.         {
  5.                 int num = 3;
  6.                 System.out.println(num*num);
  7.         }
  8. }

写完这个我就想  java编辑器用的神马呢 不能总用记事本啊
百度一下(JAVA IDE),有这样回答的:
单纯的j2se使用Eclipse,JavaEE使用MyEclipse;
不错的。
Eclipse智能程度够高了,你稍微学习下他的快捷键就行了。
另外,刚开始学的话,还是不要太依赖工具了,否则离开了IDE你就写不成程序,好多类你也记不住。刚开始可以用记事本写写。

记事本太没效率了,
下载eclipse吧
找到了这个地址
http://www.eclipse.org/downloads/
想了想因为现在学的是java se 就下载了这个
Eclipse IDE for Java Developers
想了想,看看人家教程里面是用的什么,一看是editplus.
OK 我先试试eclipse,搞不定再换editplus
下载的时候顺便百度了一下eclipse使用教程
http://wenku.baidu.com/view/449d68d97f1922791688e883.html
看了一遍觉得方便多了,就用这个.
解压后可以直接使用了,按照教程新建了java和类,运行OK

进入第三章
看过java的历史,可以说java的语法和c语言还是很像的
类型这东西看看就行了 不用记
学习初期用int和float就足够了,为啥,语言都是相通的呗.
写了一段
int IntMax = Integer.MAX_VALUE;
  System.out.print(IntMax);
外面的代码都一样  就不贴了
果然eclipse可以自动生成代码的.好处是效率,坏处是这东西生成的话,大部分记不住代码.
恩,还是学习效率第一,方法掌握,函数以后慢慢熟悉.
看到31页,这种 a++和 a+1的方式,没必要去搞什么++ --的复杂性代码,可读性太差,就用大家都看得懂的方式写最好.
这部分不可取,读了就是浪费时间精力.怀疑作者是赚稿费的.
代码写的是否牛X精炼,用户是不看的,用户只看功能好不好用.
里面写的所谓短路与或就是单个&|,意思是代码内容是否全部判断的意思.建议学习&& 和 ||即可
位这东西先不用学,很少用到.
优先级不用学,直接用括号处理.
简洁表达式先不用学.
47页的三目运算可以记一下.
if 要学,else,嵌套的先不用想那么多,可以用switch处理.和lisp的cond函数一样
循环看一下,while和for就够用了
break可以切断循环,continue可以跳跃至下次继续.知道就行
第三章基本上和其他语言一样,这样看过就行了.有个大概了解足够.
发表于 2012-7-14 08:02 | 显示全部楼层
顶猫猫。让更多人看到!
 楼主| 发表于 2012-7-14 13:39 | 显示全部楼层
20120714阴有时大雨,上午没看书,下午才开始
今天心情很糟糕,不太想看书,但是学习这事,不坚持就会忘的很快,多少看点吧.
第四章,数组
4.1看一遍
定义后要new一下开辟内存
应该有获取长度的函数
试试
int array[];
                array = new int[5];
                System.out.println(array.length);
输出5,没错了.
对于栈.堆的定义暂时不需想,数组就是数据的集合而已
4.12也讲了长度获取
4.13给数组赋值,一个一个写的笨方法
4.14大概看看
这种排序知道即可,实际应用不一定用的到
4.15二维数组看看
再试试求长度
int array[][];
                array = new int[5][4];
                System.out.println(array[0].length);
输出4,指每一列的长度.
4.16多维数组和二维差不多,用嵌套循环处理即可
42.看一遍
方法和函数一样做调用,但是最底层的区别还不知道.
4.21方法定义
4.22方法重载为了参数不同进行的处理
4.23退出当前方法用return
4.24递归 写过就好理解
4.3引用传递
原文的这个部分,建议先用完整传值的方法来写,以后再改进这部分写法.
原文是
  1.            public static void main(String[] args)
  2.         {
  3.                 int array[];
  4.                 array = new int[5];
  5.                 array[0]= 3;
  6.                 change(array);
  7.                 System.out.println(array[0]);
  8.         }
  9.         public static void change (int a[])
  10.         {
  11.                 a[0]=5;
  12.         }
花了点时间写了这样的内容
中间写出来好多错误,还是改出来了
  1.            public static void main(String[] args)
  2.         {
  3.                 int array[];
  4.                 array = new int[5];
  5.                 array[0]= 3;
  6.                 array = change(array);
  7.                 System.out.println(array[0]);
  8.         }
  9.         public static int[] change (int a[])
  10.         {
  11.                 a[0]=5;
  12.                 return a;
  13.         }
栈什么的流程无需理会,恩,下面讲了如何返回数组值,自己还摸索了一会
4.32排序就过了,自带排序功能
4.33复制方法
4.4新特性
4.41多参数就是传个表
4.42foreach循环
第四章就OK了
前面都是基础的东西.后面的对象部分,学的要慢点了.
 楼主| 发表于 2012-7-14 20:40 | 显示全部楼层
20120714晚
第五章
概念这种东西,如果觉得不是很好理解,那就看看即可
在未来的开发中,会逐渐理解透彻.
看到5.2.3尝试自己写一个案例
  1. public class Test {
  2.         public static void main(String[] args)
  3.         {
  4.                 person one = new person();
  5.                 one.name = "bb";
  6.                 one.age = 15;
  7.                 one.tell();
  8.         }
  9. }
  10. class person
  11. {
  12.         String name;
  13.         int age;
  14.         public void tell()
  15.         {
  16.                 System.out.print(name+age);               
  17.         }
  18. }
输出bb15
理解为自己定义了一个类型,类型里面有各种自己定义的方法,以后用这个对同类型的操作就很方便.
很类似我们CAD里面的图形.
5.2.4里面很多废话过了
5.3
set和get其实类似那种必须通过方法来处理属性,在方法中加入内部的处理.
5.4构造其实是类的初始化的时候一个反应器吧,可以在new的时候传值进来
构造也可以重载  OK
5.5 直接新建对象不提供变量就是临时的,类似lambda么
5.6实例,大概看一遍
5.7字符串
5.7.1实例化
5.7.2比较用等号或equal方法
5.7.3先用正常方式写吧
5.7.4先不管
5.7.5了解一下
5.8引用传递
还是之前的4.3那种,先过了
5.8.3类互相嵌套,类似CAD里面application的属性吧知道就行
 楼主| 发表于 2012-7-15 00:31 | 显示全部楼层
5.9 this关键字
表示当前对象.
5.10static静态(全局)
 楼主| 发表于 2012-7-15 19:55 | 显示全部楼层
20120715晴有时多云
5.11代码块
普通的  构造的  静态的
不是说4种么,只讲了3种.
感觉JAVA和C#很像,都是从C派生出来的.但又不完全一样.
5.12快速看看,先了解一下
5.13ok
5.14概念太多,不想记那么多了.还好下面有实例.
先看一遍思路
客户端+服务器端
服务器端=接收信息,检测参数个数,检测用户信息,返回信息.
好不容易练完了 用==判断字符串是不行的呢
  1. class Check
  2. {
  3.         public boolean NamePass(String Name ,String PassWord)
  4.         {
  5.                 System.out.print(Name == "tt");
  6.                 if (Name.equals("tt") && PassWord.equals("tt"))
  7.                 {
  8.                         return true;
  9.                 }
  10.                 else
  11.                 {
  12.                         return false;
  13.                 }
  14.         }
  15. }
  16. class Operat
  17. {
  18.         private String info[];
  19.         public Operat(String info[])
  20.         {
  21.                 this.info = info;
  22.         }
  23.         public String login()
  24.         {
  25.                 this.isexit();
  26.                 Check namepass = new Check();
  27.                 String msg;
  28.                 if (namepass.NamePass(this.info[0], this.info[1]))
  29.                 {
  30.                         msg = "ok";
  31.                 }
  32.                 else
  33.                 {
  34.                         msg = "密码错误";
  35.                 }
  36.                 return msg;
  37.         }
  38.         public void isexit()
  39.         {
  40.                 if (this.info.length != 2)
  41.                 {
  42.                         System.out.print("信息个数不对 退出");
  43.                         System.out.print("格式 java test 姓名 密码");
  44.                         System.exit(1);
  45.                 }
  46.         }
  47. }
链表部分就先跳过了
应该做练习巩固知识了,开始做做练习题吧.
 楼主| 发表于 2012-7-17 11:13 | 显示全部楼层
20120716阵雨
抽空看了第六章,概念上倒是还容易理解,就是比较多,记不住,要多写才行.
一直看到6.9,中间的多态部分的转型感觉没什么用看看就算吧.
重点是接口和抽象类.
做了简单的练习
  1. abstract class Person
  2. {
  3.         private String name;
  4.         private int age;
  5.         public Person (String name,int age)
  6.         {
  7.                 this.name = name;
  8.                 this.age = age;
  9.         }
  10.         public String getName()
  11.         {
  12.                 return name;
  13.         }
  14.         public int getAge()
  15.         {
  16.                 return age;
  17.         }
  18.         public void say()
  19.         {
  20.                 System.out.println(this.getContent());
  21.         }
  22.         public abstract String getContent();
  23. }
  24. class Student extends Person
  25. {
  26.         private float score;
  27.         public Student(String name,int age,float score)
  28.         {
  29.                 super(name,age);
  30.                 this.score = score;
  31.         }
  32.         public String getContent()
  33.         {
  34.                 return "\n学生信息-->姓名" + super.getName() +
  35.                                 "年龄" + super.getAge() +
  36.                                 "成绩" + this.score;
  37.         }
  38. }
  39. class Worker extends Person
  40. {
  41.         private float salary;
  42.         public Worker(String name,int Age,float salary)
  43.         {
  44.                 super(name,Age);
  45.                 this.salary = salary;
  46.         }
  47.         public String getContent()
  48.         {
  49.                 return "\n工人信息-->姓名" + super.getName() +
  50.                                 "年龄" + super.getAge() +
  51.                                 "工资" + this.salary;
  52.         }
  53. }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号  
©2000-2017 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2018-1-23 22:10 , Processed in 0.311462 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表