本系列用来记录自己的java自学历程,希望在日后需要时可以拿来参考,也分享给各位小伙伴!
主要跟随mooc上翁恺老师的java课程学习的。如果有c语言的基础,或者其他语言的基础,可以先看老师的ppt学习,若哪段内容有问题,再看视频即可(我居然是老老实实的看完了第一章,哈哈大概是思维的惰性)https://www.icourse163.org/learn/ZJU-1001541001?tid=1470085510#/learn/content?type=detail&id=1253333387&cid=1283613894&replay=true
-
建立项目文件
- 这一部分比较简单,利用file再new一下即可,类似qt,同时可以选择src来new一个类。
-
一个简单的Hello World程序
-
System.out.println("Hello World");
其实就一句话,很简单,类似于c或c++。
-
这里有个快捷键可以参考Alt + / 这样可以直接补充想要的代码。
-
Scanner in = new Scanner(System.in); System.out.println("echo:" + in.nextLine());
这里配合一个输入,然后返回输入的信息。
-
Scanner in = new Scanner(System.in);
-
这句话在日后就是万金油了
-
System.out.println("2+3=" + (2+3)); System.out.println( 2+3 + "=2+3" );
这是一个自带回车的输出,这里注意+可以用于字符串的连接,但是有优先级的,注意上面的括号。
-
如果想要不带回车的输出:可以利用System.out.print("……");
-
变量与常量
- 这一部分类似于c,注意有个新的关键字就好了:final标识常量
-
//变量赋值 int price = 0;
//当然也可以这样赋值 int price,amount=100; 这相当于只有amount被赋值了,price没有赋值
//常量final,常量不能再次赋值,是固定不变的
// final int amount=100;
-
一个简单的找钱小例子
-
System.out.print("请输入票面:"); int amount=100; amount = in.nextInt(); System.out.print("请输入金额:"); int price=0; price = in.nextInt(); System.out.println(amount + "-" + price + "=" + (amount-price));
浮点数
- double
- int转换成double没有问题
- 浮点数运算存在误差,精确的计算时需要用整数
- 优先级:单目先算,即负号正号;算数运算符>关系运算符>赋值运算符
- 强制类型转换:注意两个括号
-
int foot; foot = (int) (30/2.8);
注意强制类型转化,只是计算了一个新值,并不会改变原数的类型和值
-
double b=0.3; int a = (int)b;
比较
- 这里和c类似,不赘述了
- int 可以和 double 比较,但通常判断两个浮点数不行,因为浮点数的计算有误差。
- 浮点数的判断利用Math.abs(a-b)<1e-6
-
判断
- 主要使用if-else来判断,或者if-else级联判断,主要注意流程图,和c类似,不赘述。
- switch-case:break很重要,要不然就顺序执行了
-
循环
- while循环:当条件满足时,执行循环体里面的语句。
- do-while循环:先执行循环体里面的语句,再判断条件。
- do{
- <循环体语句>
- }while(<循环条件>);
- 注意最后的这个;容易省略。
- trick1:模拟比较大的循环时,可以先模拟小循环试试。
- trick2:整数分解:一个数%10,得到个位;一个数/10,去掉个位。
-
循环控制
- for(初始化;条件;单步动作)
- {
- }
- trick:和的初始化变量一般为0,积的初始化变量一般为1.
- 循环的选择:
- 有固定循环次数的用for;
- 必须执行一次的循环用do-while;
- 其他的用while即可
- 复合赋值,前缀、后缀表达式:同c
- break,continue:break跳出循环,continue跳出本轮循环
- 嵌套循环
- 逻辑类型:Boolean
- 逻辑非!,逻辑与&&,逻辑或||,优先级:非》与》或
- 注意不能写4<5<6,要写成4<5&&5<6,易错
- 循环的应用:
-
数组
- 定义数组:
- int [ ] numbers = new int [100];
- 针对元素个数必须是整数且必须给出,但可以是变量
- 对数组中的元:
- numbers[cnt] = x;
- 数组的内部成员length可以说明数组数量,numbers.length
- 初始化数组:
- int[ ] b = {1,32,4};
- int[ ] a1 = a2;
- 注意,这样的赋值方式,改变a1的同时也会改变a2对应的值。
- 数组之间的赋值是管理权限的赋值。
- 因此,赋值数组必须遍历数组,进行逐一拷贝。
- 二维数组
-
字符
- java使用Unicode表示字符,因此字符可以比较大小,可以通过减法比较两个字符之间的距离
- 单个字符char: 用单引号‘a’
- 逃逸字符不印出来
- 包裹类型(java特别的)
- 包裹类型比基础类型功能更广泛
- 如Integer.MIN_VALUE,Integer.MAX_VALUE
- Math类包括:
- abs求绝对值,pow求幂,random得到0、1之间的随机数,round四舍五入
-
字符串
-
字符串是对象,是字符串的管理者。Java的字符串还是一种特殊的“不可变”对象,所有的字符串操作都是产生一个新的字符串,而不是对原来的字符串的修改。
-
双引号括起来的0个或多个字符是一个字符串字。
-
+表示字符串的连接
-
in.next();读入一个单词,单词的标志是空格(空格、tab、换行)
-
in.nextLine();读入一整行
-
字符串的比较:
-
比较是否为同一个 用 ==
-
比较内容是否相同用equals: str1.equals("balabala");
-
-
字符串运算用. 操作:比较大小、获得长度、访问字符、得到子串、寻找字符等等
-
函数
-
Java的函数必须定义在类的内部,成为类的成员。定义一个函数,要像这样写:
<返回类型> <方法名称>(<参数表>) {
<方法体>
}
-
在这个阶段,我们要在所有的函数的返回类型前面加上关键字“static”。static表示这个函数属于这个类,而不属于这个类的任何对象,因此我们才可以不制造这个类的对象,而直接从main()函数中调用它。
-
自动类型转换:char->int->double,不能自动转换时,可以利用强制转换
-
java调用函数,只能值传递
-
本地变量:定义在函数内部的变量,作用域为大括号
写在最后:个人认为,java的基础语法与c类似,如果有c的基础,基础班java可以不学