我真是受够自己不会Java了…于是我打算快速上手一些Java知识方便之后的日常学习
我学习的参考资料是 翁恺老师的课程,在 bilibili 和 中国大学MOOC 都可以搜到,关键字是"Java 翁恺 浙江大学"
bilibili
上的画质很低
C语言也是从这里学的hhh
学过任何一门语言,都会比较好上手Java
不过好在我都学过hhh
New
接着选择Java Project
JavaSE-1.8
src
,右键New
一个Class
public ststic vooid main(String[] args)
,之后finish
Alt + /
会出现一些选项,提示可以将你的代码补全,至少在Eclipse上是这样
System.out.println("Hello World")
;
C/C++
相似的地方出现了呢~ctrl + s
保存代码ctrl + F11
运行代码Console
区看到
表示程序已经终止了Java
的HelloWorld
了!Scan
之后Alt + /
(如果你忘了的话,我提醒你一下,这是补全代码)Scanner - java.util
,你会惊奇地发现代码除了出现Scanner
,还补全了一句话Scanner in = new Scanner(System.in);
注意分号System.out.println(in.nextLine())
Console
的出现,我们成功了
了…反复成功hhheclipse
Java
的变量与C
一样,都需要先定义(强类型语言)
输入一个int
值我们使用in.nextInt
这里提示in
未关闭,这种黄色警告是warning
,解决方法是在输入结束之后加入一句in.close()
,这里直接放到最后也ok
那没别的事的话就先
了
boolean
true
/false
(type)
(int)(1.3 + 1);
// 行注释
/*
段注释
*/
ctrl + /
行注释eclipse
中的段注释超好看的C
if - else
switch - case
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int number = (int)(Math.random() * 100 + 1);
int a = 0, cnt = 0;
do {
cnt ++;
a = in.nextInt();
boolean flag = (a > number) ? true : false;
if (flag) {
System.out.println("猜大了");
} else {
System.out.println("猜小了");
}
} while (a != number);
System.out.println("恭喜!你只猜了" + cnt + "次!");
in.close();
}
}
[]
表示final
来限定即可final
修饰的东西居然是可变的!怎么回事?final
基本数据类型不可修改,但final
对象的意义是:必须得是这个对象,不能改成别的对象int[][] arr = new arr[3][5];
的方式来创建数组'\u0041'
也可以表示'A'
C
重叠'\r'
回车'\n'
换行,因为回车和换行本来就是不同的行为C
有很大的区别,我们将开始学习面向过程的程序设计
了int
,char
,double
,blloean
对应Integer
,Character
,Double
,Boolean
Integer.MAX_VALUE
,Integer.MIN_VALUE
Character.isDigit()
,Character.isLowerCase()
,Character.toLowerCase()
Math.abs()
Math.round()
四舍五入Math.random()
[0,1)的数字,在此之前我们已经使用过了如果你忘记了的话,我提醒你是在do-while-猜数游戏处Math.pow(a, b)
幂Math.max(a, b)
,Math.min(a, b)
在此之前已经用过(如果…提醒…)在最早做两数加法的时候
in.next()
in.nextLine()
还记得最早的输出你的输入那个程序吗?String.euqals()
==
判断是不是同一目标,.euqals()
判断对象是否相同越是学一门现代语言,越是要看字符串操作能力
for_each
枚举(遍历)compareTo()
比较字符串length()
获取字符串长度charAt(idx)
idx
上的单个字符idx
∈ [ 0 , l e n g t h ( ) − 1 ) \in\rm[0,length()-1) ∈[0,length()−1),小心不要越界了substring(n)
/substring(begin, end)
indexOf()
寻找字符-1
a.indexOf(c, n)
会从n
开始寻找c
字符lastIndexOf()
倒序寻找indexOf()
恰好相反startsWith()
,endsWith()
,trim()
,replace()
,toLowerCase()
,toUpperCase()
我们以上述的toUpperCase()
为例
这句话的意思是:
如果你不用对象来接收修改,那么不会影响到字符串
switch-case
C
的基础上加上public static
前缀即可C
是重叠的了C
,我简单说一下 面向对象的程序设计思想
在
C语言
中我们有一种类型叫做struct
,它是我们自己封装的一种数据类型
事实上,有了数据类型,就一定能实现这种类型的函数、数据结构
通常,我们只会对这一种数据类型进行函数操作例如我们有一个数据类型是
struct Complex
一个复数的结构体
我们用它来实现一些功能比如:打印一个复数出来、实现复数的实部,虚部的访问/获取、做两个复数的加减法、乘法…
这些功能都只限定在复数
这一个 对象 中
不会有其他的数据类型加入,这种 " 垄断 " 恰好就是面向对象的思路了
于是,我们更希望写出一个字符串的类、一个复数的类…将方法封装起来如果还是不理解的话,没关系,再给你一个例子
你一定写过或是听说过 学生管理系统
如果我们将其中的对于学生的操作都封装起来…也完成了面向对象的程序设计以上就是面向对象程序设计的基本思路了!
内部类
for_each()
C语言
我默认你学过C语言,我们很轻易就能理解出现上述情况的原因就是改变了指针所指的内容init()
初始化,可以读取一个数值成为初始值…那么我们首先需要一个初始值:origin + sum
,我们在show()
中进行修改即可Java
具有自动回收机制new
出的对象默认为 0 0 0重载
this()
可以调用其他构造函数图书馆
,其中包含书架
,书架中也可以包含书
,书中可以包含编号
、借阅情况
、价格
等等…private
关键字可以封闭访问属性,可以很好地保护数据在我学C++的时候dalao说过凡是数据都private就行public
关键字可以开放访问属性,不过这个访问属性指的是该类中的开放,其他类不可见public
也去掉,这样就可以实现 同一package (包)都能访问friendly
)如果你如果后要学习C++,请记住这个词public
,只能放在相同类名的包 (package) 中public
权限,而是开放于整个包protected
,现在不涉及,我们会在后面的文字中说明,这里先跳过import
关键字或者写出全名import Pac.*;
import java.util.Scanner;
public
是懂了,那static
又是什么呢?C语言
中static
叫做静态全局变量,Java
中也是这样。Java起源于C不过有了更丰富的内涵。static
函数只能调用static
函数,static
成员变量如果一直在这个根目录下写东西会让整体结构非常不美观,我们之后再来谈类
这件事情在C++中也叫作(模板)容器,C++官方甚至开发了STL
包含两个结构:
import java.util.ArrayList;
...
ArrayList<String> notes = new ArrayList<String>();
size()
大小get()
remove()
public String toString() {
return ...;
}
就可以直接像上面那样输出对象
C++中叫做unordered_map
extends
关键字来修饰public class A extends Item
...
public class B extends Item
...
private ArrayList<Item> listItem = new ArrayList<Item>();
...
protected
super
关键字如果你学过python应该也不成问题
super
可以用来引用直接父类的实例变量。super
可以用来调用直接父类方法。super()
可以用于调用直接父类构造函数。private
成员,但是可以使用父类函数访问super
即可下面是与C++很不同的地方!
将子类对象转为父类对象。此处父类对象可以是接口。
Father f = new Son();
将父类对象转为子类对象。
Son s = (Son)f;
不要与基本类型的强制类型转换混淆了,对象之间的这种操作叫做转型
点击观看
注解的使用策略
模型层(Model)、显示层(View)、控制层(Controller)
抽象
implements
笔者写至此处已经半夜…没有动力再去复习学过的知识了…现在想快速完成挑战
stream
这个概念与C++
类似,在此略去bufferedReader
这个方法…可以快速读入竞赛使用文件流
同样的原因,在此不做细讲串行化
E O F EOF EOF
>>挑战成功:一天学完Java语法
后期还会更新Java的使用技巧我有一本巨厚的Java书…不过一直都没看…因为…最近快开学了!!…呜呜呜