Skip to content

Latest commit

 

History

History
executable file
·
169 lines (128 loc) · 4.7 KB

File metadata and controls

executable file
·
169 lines (128 loc) · 4.7 KB

Java Learning

StillCoding Java入门

Star me if you like it!

欢迎想和我讨论关于一下书籍的内容的人给我提Issues.

Welcome to discuss with me about the contents of the books below. :)


类别(classification)


参考书籍(Reference books):

Thinking to Java 4th Edition //里面涉及了很多设计模式相关的知识, 用作入门书还行, 不过书中设计模式相关的东西看起来就会有点吃力

Algorithm 4th Edition //普林斯顿的算法课用的教材, 很适合用作算法的入门书. 不过 里面的练习较多而且有一些练习不是很有用. 视频地址

Java The Complete Reference Ninth Edition //不建议用作入门书, 里面的内容简直是多而全, 虽然有一点详略, 不过确实只适合用作一本字典


工作环境(Work Space)

IDE

JetBrain IDEA


Sublime Text3:

对于小型项目或者单文件程序, 直接在Sublime Text3上面打代码就好了, 编译运行需要自己搭建一下:

创建执行编译运行的小脚本

Windows:

runJava.bat: 编译加运行(不能自定义参数)

@ECHO OFF
cd %~dp1
ECHO Compiling %~nx1.......
IF EXIST %~dnp1.class (
DEL %~dnp1.class
)
javac -encoding UTF-8 %~f1
IF EXIST %~dnp1.class (
ECHO -----------OUTPUT-----------
REM 用我编写的LoadAnyClass程序来加载class文件,这样就可以解决原来用java只能直接运行不含有package语句的程序
cd %~dp0
REM 我也不知道为什么,必须要指定当前目录为CLASSPATH,才不会报错IllegalAccessError
REM 好像IllegalAccessError是跟ClassLoader前后不一样之类的有关的异常.
java -classpath "." LoadAnyClasses %~dnp1.class
REM cd %~dp1
REM java %~n1
)

runJavaCmd.bat: 编译然后保留cmd窗口让用户自己运行

@echo off
Rem 不显示@后面的命令,echo off表示关闭命令的回显
cd %~dp1
ECHO Compiling %~nx1.......
IF EXIST %~n1.class (
DEL %~n1.class
)
javac -encoding UTF-8 %~nx1
IF EXIST %~n1.class (
start cmd.exe dir
)

bat中目录变量的意思: 10 DOS Batch tips Linux/macOS:

runJava.sh:

# Linux/macOS下的$1都是包括了扩展名了
[ -f "$1.class" ] && rm $1.class
# fullDir=$(pwd)
# fullPath=${fullDir}"/$1.class"
# for file in $1.java
for file in $1
do
# echo "Compiling "${fullPath}"/$file......"
  echo "Compiling $file......"
  javac -encoding "utf-8" $file
done
var=$1
name=${var%%.java}
#if [ -f "$1.class" ]
if [ -f ${name}".class" ]
then
  chmod 755 ${name}".class"
  echo "------Output------"
# 进入到脚本所在的目录
  cd `dirname $0`
# java -classpath "." LoadAnyClasses ${fullPath}
  java -classpath "." LoadAnyClasses ${name}".class"
else
  echo " "
fi

P.S. 如果你想编译所有的Java文件,需要将第二行的$1.java替换成*.java

LoadAnyClasses是我自己用Java写的一个能够加载任意class字节码文件的小程序 程序源码

将上述小脚本放入JDK的bin目录下(或者其他放入$Path的目录)

创建sublime-build

用notepad++之类的文本编辑器在在%Sublime Text 安装目录%/package/或者Sublime Text用户目录中创建一下两个文件:

这里我为了不修改Sublime Text自带的JavaC.sublime-package, 我选择在Sublime Text用户目录中创建.

这里以Windows下为例: 在C:\Users\DCMMC\AppData\Roaming\Sublime Text 3\Packages\User下创建:

MyJava_cmdline.sublime-build:

{
  "shell" : true,
  "cmd": "start cmd /c runJavaCmd.bat \"$file\"",
  "file_regex": "^(...?):([0-9]):?([0-9])",
  "selector": "source.java",
  "encoding": "GBK"
}

MyJava_SublimeConsole.sublime-build:

{
  "shell_cmd": "runJava.bat \"$file\"",
  "file_regex": "^(...?):([0-9]):?([0-9])",
  "selector": "source.java",
  "encoding": "GBK"
}

因为Sublime Text3保存源码的默认格式是UTF-8,所以需要将"encoding": 设置为GBK 记得在Linux/macOS下改成UTF-8!!!

重新打开Sublime Text3, 在Tools -> Build System中选择要用的编译脚本, 按Ctril+B编译运行.

上述所有文件均可在Workspace中找到

笔记

我用的Markdown格式来记笔记, 编辑器用的是小书匠

笔记的Github地址

License

MIT