20155314 2016-2017-2 《Java程序设计》第1周学习总结

学习目标

  • 了解Java基础知识(已完成)
  • 了解JVM、JRE与JDK,并下载、安装、测试JDK(已完成)
  • 了解PATH、CLASSPATH、SOURCEPATH的作用并会设置(正在学习)
  • 初步使用IDE(推荐IDEA),会编译、运行、调试简单的Java程序(已完成)

教材学习内容总结

  • 浏览教材,根据自己的理解每章提出一个问题
  • 认真学习教材第一章、第二章

第一章

Java常识

Java最早是Sun公司绿色项目Green Project中编写Star7应用程序的程序语言,当时取名为Oak

  • Java诞生:1995年5月23日
  • Java之父:James Gosling
  • 最新Java版本:Java SE 8,2014年3月18日发布
  • 相关名词解释(小白福利QAQ)
    • Java SE:Java标准版本

      • JVM:Java虚拟机
      • JRE:1Java执行环境
      • JDK:包括JRE及开发过程中需要的一些工具程序
    • Java EE:Java企业版本
    • Java ME:Java微型版本
    • JCP:一个开放的国际组织,主要由Java开发者以及被授权者组成,职能是发展和更新
    • JSR:Java规范提案,指向JCP提出新增一个标准化技术规范的正式请求
    • RI:根据JSR成果做出免费且开发原始码的参考实现
    • TCK:技术兼容测试工具箱
    • Oracle JDK:被Oracle收购之后的JDK参考实现
    • OpenJDk:Sun在2006年的JavaOne大会上把Java开源而形成的项目
    • JavaOne:每年一次的Java盛会
    • IDE:集成开发环境
    • API:应用程序编程接口
    • OO:面向对象
    • JavaDoc:Sun公司提供的一个技术,它从程序源代码中抽取类、方法、成员等注释形成一个和源代码配套的API帮助文档
    • javac:Java语言编程编译器,javac命令可以将java源文件编译为class字节码文件

get到的重点——教材建议的Java学习路径

  1. 深入了解JVM/JRE/JDK:JVM是Java程序唯一认识的操作系统,其可执行文件为.class文档
  2. 理解封装(Encapsulation)、继承(Inheritance)、多态(Polymorphosm):面向对象中最重要的概念
  3. 掌握常用Java SE API架构
    可参考Java 集合系列之Collection架构
  4. 学习容器观念:
    • 操作层面:执行于JVM上的Java应用程序
    • 抽象层面:应用程序沟通、协调相关资源的系统
  5. 研究开放原始码项目:参考教材作者林信良教授的在线文件
  6. 学习设计模式与重构:根据需求做出好的设计,因应需求变化调整现有程序架构
  7. 熟悉相关开发工具:Eclipse IDE、NetBeans IDE,还可以搭配Ant构建工具、Maven或Gradle项目工具等一同使用

通过百度学到的macOS终端命令

参考Mac 终端命令大全,这里列出几个常用的命令

命令名 功能描述 使用举例
man 查看命令的详细帮助 man ls
mkdir 创建一个目录 mkdir dirname
rmdir 删除一个目录 rmdir dirname
cd 改变当前目录 cd dirname
pwd 显示当前目录的路径名 pwd
cp 复制文件或目录 cp file1 file2
find 使用匹配表达式查找文件 find . -name "*.c" -print
file 显示文件类型 file filename
open 使用默认的程序打开文件 open filename
passwd 修改用户密码 passwd
xlock 给终端上锁 xlock -remote
touch 更新文件的访问和修改时间 touch -m 05202400 filename
ps 显示进程当前状态 ps u
kill 终止进程 kill -9 30142
history 列出最近执行过的几条命令及编号 history
uname 显示操作系统的有关信息 uname -a
clear 清除屏幕或窗口内容 clear
who 列出当前登录的所有用户 who
whoami 显示当前正进行操作的用户名 whoami
tty 显示终端或伪终端的名称 tty
du 查询磁盘使用情况 du -k subdir
df 显示文件系统的总空间和可用空间 df /tmp
w 显示当前系统活动的总信息 w

通过百度学到的Mac终端常用快捷键(百度真是好东西)

Tab命令、文件名等自动补全

ctrl + C终止正在运行的程序

ctrl + D退出 Terminal(建议用command + W

ctrl + U清除当前输入命令

ctrl + W删除当前输入命令最后一个单词

Ctrl + K删除光标处到行尾的字符

ctrl + A光标跳至行首

ctrl + E光标跳至行尾

ctrl + L清屏

command + T新建终端窗口标签

command + D垂直分屏

command + ctrl + F全屏

教材学习中的问题和解决过程

JDK(JDK 8 for mac)的下载、安装

按住之前在百度的帮助在macOS上Automator.app中设置好的快捷键contrl+alt+T,打开终端,输入java:

显示JDK尚未安装,点击【更多信息...】进入下载页面:

下载完毕,双击安装:

点击【继续】,直至安装完成:

安装完JDK for mac后,需要搭建Java开发环境

我的MBP配置如下:

再次打开终端,输入echo $SHELL查看macOS Sierra 10.12.3版本的系统使用的是什么shell命令:

终端输出的是bash,说明是默认的Unix Shell命令

输入java,就会出现如下界面:

通过命令行查看Java版本:

终端输出JDK的版本为1.8,是当前最新版本哟~( ̀⌄ ́)~

配置环境变量

在终端中输入sudo vim etc/profile,输入mac用户密码(就不告诉你(/ω\))

额...怎么又突然全变成英文了尴尬(¬_¬)

使用vi编辑profile文件
键入i,进入插入模式,在文件尾部,添加Java路径:
JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/" CLASS_PATH="$JAVA_HOME/lib" PATH=".;$PATH:$JAVA_HOME/bin"

添加完毕之后,按esc退出插入模式,并键入wq!保存退出文件。
shit,为什么又打不开了。。

只好再次求助百度啊百度QAQ
某大神提供了一个超简便的方法:

打开terminal

然后输入vi .bash_profile

将这段文字输入:JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home

在vi编辑器使用:wq命令保存退出

输入source .bash_profile 这样就可以使得环境变量起作用了

再输入echo $JAVA_HOME然后...啊居然成功了( ̀⌄ ́)成功输出刚才配置的路径~表示环境变量已经配置好了·_·

然而不巧我忽然看到大神最下面的一句话:

必须说明的是这种配置方法只适用于用户环境变量,如果系统更新,之前的配置可能失效,如果想要永久改变需要配置在/etc目录下的profile文件中

我:……还是不靠谱啊喂!!
不管怎样,环境变量已经配置完毕,打开终端输入javac即出现以下界面:

代码调试中的问题和解决过程

macOS下运行Java Hello World——我的第一个Java程序

  1. 在写第一个Java程序之前,我通过万能的百度Mac上如何新建文本文档学到了用终端命令行法在Desktop上新建了一个名为Hello.txt的文本文档——终端下:

    cd 目录

    vi 文件名vim 文件名
    即如下图所示:

    i键,在Hello.txt中输入娄老师第一节Java课上给的Hello World代码,如下图,输入完成后,按esc,再输入:wq即完成创建,并把文件名改为Hello.java:
    public class Hello{ public static void main(String[] args){ System.out.printf("Hello World!\n"); } }


  2. 在主目录下新建一个文件夹java,把Hello.java放到该文件夹
  3. 终端下切换到当前目录cd java,现在可以编译程序了~输入
    javac Hello.java这时在主目录的java文件夹里已经生产了一个编译出的class文件再次运行终端,输入
    java Hello这时激动人心的字幕“Hello World!”出现了!至此人生中第一个Java程序成功编译了66666!我成功了!!欧耶!

在Eclipse for mac中也实现了Hello World


关于IDE,我自学并安装了macOS平台下使用较为广泛的Eclipse作为我以后的Java开发环境,毕竟在相应的开发环境下编译运行Java程序比在终端输入命令要方便很多,如同学习C语言时在VC2012、VC6.0和CodeBlocks等环境下一样。通过安装Eclipse,我又对IDE以及JDK有了进一步的认识,无论是通过翻阅教材还是百度,我确实学到了不少新知识,开阔了眼界。

Eclipse官网下载完Eclipse后开始安装,我选择的是for java Developers的IDE配置模式,其实看下面的选项就知道Eclipse还可以作为C语言学习的开发环境,只可惜当时学C的时候被CodeBlocks死死局限住了,当时真孤陋寡闻啊(>_<)


安装完后,出现welcome界面,eclipse界面令人焕然一新~(纯英文界面,好在成功考过六级,看懂这些还是不成问题的(。ì _ í。))但由于我迫不及待地开始编写我的Hello World,这些一概无视(>_<)(其实提示信息什么的还是要好好看看啊QAQ)

选create a java project,在最上面Project name一栏自豪地写上了我的“Hello World”,finish,OK项目已建成!

然后需要新建一个类(class),点击左边刚刚新建的Hello World,展开后右键src,选择new——class

同样的要写上类的名字,不过刚开始我起的Hello World好像出了点问题,如图,上面的提示似乎是不能出现空格?那就HelloWorld呗( ̀⌄ ́)
不过要注意下面红框框里的main要勾选哟(不明觉厉)

下面就到了熟悉的尽情码代码的环节了~很快便把娄老师给的Hello World代码又输了上去,点击Run,最激动人心的时刻来临了!屏幕下方Console界面上赫然出现的“Hello World!”还是使我受到莫大的鼓舞

mission complete!(>_<)

代码托管

  • 代码提交过程截图:

    • 运行 git log --pretty=format:"%h - %an, %cd : %s" 并截图
  • 代码量截图:
    • 运行 find src -name "*.java" | xargs cat | grep -v ^$ | wc -l 并截图

上周考试错题总结

  • 木有考试QAQ但需要好好复习一下Linux(◐‿◑)

学习心得与体会

这是我第一次写这么的博客,差不多历时五天吧,每晚上自习都会投入大量的时间(玩弄我的macOS),可能以后每天还要继续更新。由于我用的是macOS导致直接形成与大家的windows对立的局面,很多问题别人根本无法解答只能靠自己一点点百度,别人来问我windows上如何用git呀这个那个的老实说很遗憾我也并不太清楚(o.O)第一周作业做的虽然有些仓促不过真心学到了不少东西,包括markdown(macOS下我用的macdown)的语法和终端命令我又里里外外研究了个遍,很多时候我看教材也会经常翻回前面两章看看,平时没事翻翻以前的博客、娄老师的课程汇总,做到温故而知新,同学们的博客我也经常逛哟(这是什么癖好(>_<))

百度是个好东西,在百度的过程中关于macOS快捷键又学会了一招!

macOS下写路径的方法:
shift+command+G(在Finder里操作)

真的好方便啊哈哈哈哈(/ω\)
shift+command+G
shift+command+G
shift+command+G
重要的快捷键要提醒自己三遍!!

杂音

今天我的win7虚拟机崩了,无法安装更新,难过

开学的时候从某宝上给我心爱的MBP弄了一个可爱的实用的键盘膜酱QwQ上面有很多便于学习macOS快捷键的提示哟暖暖的很贴心嗯(拒绝打广告)

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 34/34 1/4 12/12

参考资料

20155314 2016-2017-2 《Java程序设计》第1周学习总结的更多相关文章

  1. 20155336 2016-2017-2《JAVA程序设计》第九周学习总结

    20155336 2016-2017-2<JAVA程序设计>第九周学习总结 教材学习内容总结 第十六章 JDBC(Java DataBase Connectivity)即java数据库连接 ...

  2. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  3. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  4. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  5. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  6. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  7. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  8. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  9. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  10. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

随机推荐

  1. MYSQL与MSSQL对比学习

    最近在将公司的一个产品里面相关的MSSQL语句修改为可以在MYSQL上执行的语句 l  优点分析: MYSQL短小精悍,容易上手,操作简单,免费供用的.相对其它数据库有特色又实用的语法多一些.SQL怎 ...

  2. python之协程gevent模块

    Gevent官网文档地址:http://www.gevent.org/contents.html 进程.线程.协程区分 我们通常所说的协程Coroutine其实是corporate routine的缩 ...

  3. 阿里云服务器被他人通过SSH暴力破解后的安全加固

    背景说明:我登录阿里云服务器控制台时,收到几条安全警告信息. 从图中可以知道,对方的IP地址是47.97.68.118,通过SSH登录方式,登录时用我服务器里的admin用户,然后用穷举法暴力破解ad ...

  4. BZOJ4364: [IOI2014]wall砖墙(线段树)

    题意 题目链接 Sol 一个显然的思路是维护最大最小值以及最大最小值的覆盖标记. https://paste.ubuntu.com/p/WXpBvzF6Y2/ 但实际上因为这题只需要输出最后的操作序列 ...

  5. php5.5过渡--变量

    单纯的定义变量,如: $usernumber = $_POST['usernumber']; 会出现警告: Notice: Undefined index: usernumber in ... 规范问 ...

  6. com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/NOTICE

    在将vivo eclipse sdk 迁移 android studio  时候报错 Error:Execution failed for task ':vivosdk:transformResour ...

  7. Reducing and Profiling GPU Memory Usage in Keras with TensorFlow Backend

    keras 自适应分配显存 & 清理不用的变量释放 GPU 显存 Intro Are you running out of GPU memory when using keras or ten ...

  8. url override and HttpSession implements session

    背景 HttpSession默认使用Cookie存储Session ID,如果在用户禁用浏览器Cookie的功能后,仍打算运用HttpSession来进行会话管理,那么可以搭配URL重写来实现. 实现 ...

  9. window 命令行

    清屏 cls 启动服务 net start 服务名(nexus.mysql) 关闭服务 net stop 服务名(nexus.mysql) 删除服务 sc delete 服务名 如果服务名有空格,加引 ...

  10. CCSUOJ评测系统——第二次scrum冲刺

    1.小组成员 舒 溢 许嘉荣 唐 浩 黄欣欣 廖帅元 2.第二次冲刺任务安排 对HUSTOJ数据库进行分析 序号 表名 作用 备注 1 compileinfo 记录编译错误的记录 2 contest ...