前言
第二周算是正正式式的学习了java程序设计。之前对java是一片茫然,现在算是初见端倪了,知道了java程序的基本开头,多个class时该运行哪个,哪个是输出打印语句等等。
目前我使用的java代码编写程序是Atom
,Atom
是 Github
开源的文本编辑器,这个编辑器完全是使用Web技术构建的(基于Node-Webkit)。启动速度快,提供很多常用功能的插件和主题,可以说Atom
已经足以胜任“半个IDE”了。
相比记事本和linux系统中的vim
,gedit
等等编辑器来说Atom
十分智能,不同功能不同性质代码颜色不同以示区别,甚至还可以补全代码(但是这功能得以后熟练以后再用,现在就是要多练习多打代码记下基本格式和语句)。
Atom
还可以体系管理整个大文件夹下的的众多文件夹和文件,可以在侧边栏一目了然自己代码文件夹下有些什么文件夹和文件,代码打开切换也非常迅速。推荐使用,windows子系统直接安装到windows下然后打开Atom
open project
在C盘找到自己子系统文件夹(以我自己的为例C:\Users\wyhy-(电脑所有者用户名,具体找自己的名字)\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home\yhooyon(我ubuntu系统名,具体找自己的))找到自己用户文件夹找到存放代码的src文件夹就可以管理自己的代码了。
教材学习内容总结
标识符与关键字
标识符
用来标识类名、变量名、方法名、类型名、数组名及文件名的有效字符序列称为标识符,标识符就是一个名字。
java关于标识符的规则:
- 标识符由字母、数字、下划线“_”、美元符号“$”组成,第一个字符不能是数字。
- 不能把java关键字和保留字作为标识符。
- 标识符没有长度限制。
标识符对大小写敏感。
关键字
关键词就是具有特定意义的单词,不可以作为标识符。
java50个关键字;- abstract 表明类或者成员方法具有抽象属性
- assert 断言,用来进行程序调试
- boolean 基本数据类型之一,布尔类型
- break 提前跳出一个块
- byte 基本数据类型之一,字节类型
- case 用在switch语句之中,表示其中的一个分支
- catch 用在异常处理中,用来捕捉异常
- char 基本数据类型之一,字符类型
- class 声明一个类
- const 保留关键字,没有具体含义
- continue 回到一个块的开始处
- default 默认,例如,用在switch语句中,表明一个默认的分支
- do 用在do-while循环结构中
- double 基本数据类型之一,双精度浮点数类型
- else 用在条件语句中,表明当条件不成立时的分支
- enum 枚举
- extends 表明一个类型是另一个类型的子类型,这里常见的类型有类和接口
- final 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量
- finally 用于处理异常情况,用来声明一个基本肯定会被执行到的语句块
- float 基本数据类型之一,单精度浮点数类型
- for 一种循环结构的引导词
- goto 保留关键字,没有具体含义
- if 条件语句的引导词
- implements 表明一个类实现了给定的接口
- import 表明要访问指定的类或包
- instanceof 用来测试一个对象是否是指定类型的实例对象
- int 基本数据类型之一,整数类型
- interface 接口
- long 基本数据类型之一,长整数类型
- native 用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的
- new 用来创建新实例对象
- package 包
- private 一种访问控制方式:私用模式
- protected 一种访问控制方式:保护模式
- public 一种访问控制方式:共用模式
- return 从成员方法中返回数据
- short 基本数据类型之一,短整数类型
- static 表明具有静态属性
- strictfp 用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范
- super 表明当前对象的父类型的引用或者父类型的构造方法
- switch 分支语句结构的引导词
- synchronized 表明一段代码需要同步执行
- this 指向当前实例对象的引用
- throw 抛出一个异常
- throws 声明在当前定义的成员方法中所有需要抛出的异常
- transient 声明不用序列化的成员域
- try 尝试一个可能抛出异常的程序块
- void 声明当前成员方法没有返回值
- volatile 表明两个或者多个变量必须同步地发生变化
while 用在循环结构中
java中的基本类型
- 整数:可细分为short(占2字节)、int(占4字节)、long(占8字节)
- 字节:byte,若用于表示整数,byte可表示-128~127的整数
- 浮点数:主要用于存储小数数值,可分为float(占4字节)与double(占8字节)
- 字符:char,汉字、英文字符都是双字节的,Java字符编码是Unicode
- 逻辑类型:boolean
类型转换
类型很多时候编译不通过,可能就是这些细节不注意。Java中对变量类型区分是非常严格的,在不特别指明的情况下,整数一般为int类型,小数则默认为double型,如果不特别注意这些就容易犯错,例如: float PI = 3.14,3.14默认为double型,不能把double型的小数赋给float型,这样就会丢失精度,编译时就会报错。
输入、输出数据
输入基本型数据
Scanner是SDK1.5新增的一个类,可是使用该类创建一个对象.
Scanner reader=new Scanner(System.in);
然后reader对象调用下列方法(函数),读取用户在命令行输入的各种数据类型:
next.Byte(),nextDouble(),nextFloat,nextInt(),nextLine(),nextLong(),nextShot()
上述方法执行时都会造成堵塞,等待用户在命令行输入数据回车确认.例如,拥护在键盘输入12.34,hasNextFloat()的值是true,而hasNextInt()的值是false. NextLine()等待用户输入一个文本行并且回车,该方法得到一个String类型的数据。
输出基本型数据
System.out.println()和System.out.print()
可输入串值、表达式的值,二者的区别是前者输出数据后换行,后者不换行。允许使用并置符号+将变量、表达式或一个常数值与一个字符串并置一起输出。
格式控制符:
- %d:输出int类型数据
- %c:输出char类型数据
- %f:输出浮点数类型数据,小数点最多保留6位。
- %s:输出字符串类型数据。
- %md:输出int类型数据占m列
%m.nf:输出浮点类型数据占m列,小数点保留n位。
运算符
- 在逻辑运算符中,&&的特点在于如果&&左边为假,则不论右边真值如何,其逻辑判断返回结果为假;
同样的,||的特点在于如果||的左边为真,则不论右边真值如何,其逻辑判断返回结果为真。这在一定的程度上还是能提高代码的编译执行效率。 在递增、递减运算符中,就要注意运算符是放在变量的左边还是右边,如果运算符在变量左边,则先改变变量值再进行运算,如果运算符在变量右边,则先进行运算再对变量进行相应的加减变化。
语句
if...else条件式
需要注意的是一定要把执行的语句用大括号括起来,否则,默认的是只执行if后的第一句。
switch条件式
switch有点像多个分支的if语句,但在某些情况下,用switch可以提高代码的效率,书本上也有相应的例子,不用进入每个if语句去判断,可以通过待判断的值直接进入相应的case,只是注意switch一般都会配以break一起使用,编写代码时不能忘记这一点。
while循环
当型循环:while(条件式){描述句},先判断条件式的布尔类型,如果成立,则执行描述句。
直到型循环:do{描述句}while(条件式);,特点是先执行一遍描述句,再判断条件,如果条件成立就再执行一遍描述句,直到条件不成立为止。
需要注意的是:while的两种类型的区别,在写法上,注意当型while后没有分号,第二种有分号。
break continue
break:结束当前循环。
continue: 跳过当前循环一次。
break、continue还可以和标签一起配套使用。break与标签配套时,则结束该标签包含的所有语句;continue与标签配套时,则跳过该标签包含的所有语句。
教材学习中的问题和解决过程
关于println
print
与printf
的区别
print--是函数,可以返回一个值,只能有一个参数,将它的参数显示在命令窗口,并将输出光标定位在所显示的最后一个字符之后。
- println--与print唯一的区别是println换行输出,将它的参数显示在命令窗口,并在结尾加上换行符,将输出光标定位在下一行的开始。
printf--函数,把文字格式化以后输出,直接调用系统调用进行IO的,他是非缓冲的。
代码托管
感悟
学习一门程序语言最重要的是多练习,首先多打代码即使不理解不会,只能看着别人的代码打,看多了渐渐就会理解,至少明白这门语言的基本框架,怎么开头,怎么描述,套路是什么。后面随着课程渐渐就能完全理解代码的意思了。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 1/4 | 10/10 | |
第二周 | 300/500 | 1/5 | 10/20 | |
第三周 | ||||
第四周 |
计划学习时间:10小时
实际学习时间:10小时
改进情况:
有空多看看java实践教程学习视频