zoukankan      html  css  js  c++  java
  • Java学习笔记 1

    安装JDK

    以前搭hadoop的时候给ubuntu装过,学algorithms的时候给win装过……还都是JDK7,总之不用再装了=___,=

    这里是个不错的教程:How to Install Oracle Java on Ubuntu Linux 和配套的升级教程:How to Upgrade Oracle Java on Ubuntu Linux

    安装eclipse

    以前入门安卓的时候在win下装过(然后就被我果断坑掉了),记得貌似也是点点点就装好了,Ubuntu要从头装一次

    在Ubuntu 12.04下安装eclipse:How to install eclipse in ubuntu 12.04

    注意:eclipse自带的那个icon跟个乒乓球那么大,无论是gnome还是unity都不能直接拿去做launcher,要稍微动下手脚,没有记哪里找到的解决方法,即时搜就可以了。

    开始入门

    用eclipse自带的教程就可以开始入门HelloWorld了。

    注:eclipse自带的SWT教程居然自带大坑……按照上面的步骤来做会报类似于“no swt-gtk-4427 in java.library.path”的错误,因为它没说全步骤……解决方法在这里 (图形界面好蛋疼……)

    折腾编译

    学会了用eclipse导入第三方jar来编译之后,我决定来折腾一下命令行编译。

    搜索了一下找到了一个应该OK的解决方案:How to compile a .java file in Java?(果然想把eclipse自带教程的程序手动编译试试的折腾星人不止我一个……)

    首先把之前按教程写的HelloWorldSWT.java cp到另一个地方去,接着尝试编译,用eclipse下的jar的绝对路径放到classpath里面:

    $ javac -cp /opt/eclipse/plugins/org.eclipse.swt.gtk.linux.x86_*.jar HelloWorldSWT.java

    编译OK,跑跑看

    $ java -cp /opt/eclipse/plugins/org.eclipse.swt.gtk.linux.x86_*.jar:. HelloWorldSWT

    结果报错了……

    Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Display
    	    at HelloWorldSWT.main(HelloWorldSWT.java:19)
    	Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.widgets.Display
    	    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    	    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    	    at java.security.AccessController.doPrivileged(Native Method)
    	    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    	    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    	    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    	    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    	    ... 1 more
    

    中途手误了几次在运行的时候没有把当前目录也放进cp,遇到了这样的错误: Error: Could not find or load main class

    另外找到了一个很棒的小技巧:用debug模式去看eclipse是用什么命令执行你的程序的: Can I run from command line program created by Eclipse?

    发现eclipse在用的命令没有星号,我又试着把星号去掉用jar的实际路径代替一下试试(记得当初跑hadoop也遇到过类似的问题是这样解决的)

    $ javac -cp /opt/eclipse/plugins/org.eclipse.swt.gtk.linux.x86_3.103.0.v20140605-2012.jar HelloWorldSWT.java
    $ java -cp /opt/eclipse/plugins/org.eclipse.swt.gtk.linux.x86_3.103.0.v20140605-2012.jar:. HelloWorldSWT	

    结果居然成功了Orz 原来stackoverflow上已经有人解释过了,java的wildcard和平时在bash里用的是不一样的: Setting multiple jars in java classpath

    OK,换种方法跑

    java -cp "/opt/eclipse/plugins/*:." HelloWorldSWT

    居然成功了,跪……

    写几个小程序

    挑了一本free book Think Java来看,虽然是针对不会编程的初学者的书,不过刚好是给APCS学生写的,实训的那个GridWorld就是书上讲解的一部分。挑了一些课后习题来做,都放在我的github上了(新一点的eclipse都自带git支持的,点点点就行了……)

    因为GridWorld是APCS的program,所以网上资料多到爆,youtube上也有很多视频。随手找了一个导入eclipse的教程: Getting Started with Eclipse for Java and GridWorld 无痛安装完毕,一运行就跑出那个小虫虫了……

    看书

    不知道看Head First Java好还是Core Java比较好……不过翻了一下Core Java,发现蛮有趣的,决定看后者了。 大概看了第一章,有一些比较好玩的点

    • Java白皮书在这里
    • Java的特性被刻意设计成了精简版的C++,去掉了一大堆繁杂难懂的东西,还把指针换成了引用+GC
    • C++的多重继承在Java里被简化成了interface
    • Java的int总是32位,String总是Unicode
    • 各种宣扬JIT大法好……
  • 相关阅读:
    UVA 11925 Generating Permutations 生成排列 (序列)
    UVA 1611 Crane 起重机 (子问题)
    UVA 11572 Unique snowflakes (滑窗)
    UVA 177 PaperFolding 折纸痕 (分形,递归)
    UVA 11491 Erasing and Winning 奖品的价值 (贪心)
    UVA1610 PartyGame 聚会游戏(细节题)
    UVA 1149 Bin Packing 装箱(贪心)
    topcpder SRM 664 div2 A,B,C BearCheats , BearPlays equalPiles , BearSorts (映射)
    UVA 1442 Cave 洞穴 (贪心+扫描)
    UVA 1609 Foul Play 不公平竞赛 (构(luan)造(gao)+递归)
  • 原文地址:https://www.cnblogs.com/joyeecheung/p/3843707.html
Copyright © 2011-2022 走看看