一、课程总概

这门课程的学习难度属于入门级别,又由于有c++的基础,所以学习这门课程也是比较轻松的。可以简单地把这门课的学习分为四部分:第一部分,java的介绍(第一章);第二部分,java的数据类型及控制语句(第二章~第四章、第六章);第三部分,java的方法(第七章);第四部分,java的编程练习(第五章、第八章)。

二、第一部分 java的介绍

java简介


1.java程序运行的原理

【java运行原理】

2.名词解释

JVM(Java Virtual Machine):虚拟器

JDK(Java Development Kit):java开发工具包

JRE(Java Runtime Environment):java运行时环境

3.文件目录

java->jdk->bin(JDK命令文件,包含java.exe和javac.exe)

java->jdk->lib(类库文件,包含tools.jar)

4.配置环境变量

安装完JDK后,进行环境变量配置

JAVA_HOME    配置JDK安装路径            JDK文件位置

PATH                配置JDK命令文件位置    在最前面+bin目录位置+;

CLASSPATH    配置类库文件位置            .;+lib目录位置

配置验证:cmd->java/javac

5.开发平台

集成开发环境(IDE)是一类软件将程序开发环境和调试环境集合在一起,提高开发效率,有Eclipse、MyEclipse(是对Eclipse的扩展,是一个十分优秀的用于开发java,java ee的Eclipse的插件集合)等

使用步骤:

1)创建Java项目

2)创建程序包(便于程序管理,src文件用来放置源代码文件)

3)编写java的源代码

4)运行java程序

PS:也可直接在创建项目之后直接右击创建类(可填写包的名字)

【新建java类】

6.简单的程序

package com.imooc;

public class helloworld{

public static void main(String[] args) {

String a="我爱慕课网";

String b="www.imooc.com";

System.out.println(a+b);

}

}

PS:其中class后面的类名必须与文件名保持一致,main函数为程序的入口

7.程序的移植

右击导入->General->现有项目到工作空间中

【程序的移植】

三、第二部分 java的数据类型及控制语句

变量与常量


1.关键字

【java关键字】

2.标识符

1)由字母、数字、下划线、美元符号组成,但不能包含@、%、空格等其他特殊字符,不能以数字开头

2)不可以是java关键字和保留字

3)严格区分大小写

4)最好能做到见名知意

5)变量名由多单词组成时,第一个单词小写,其后单词的首字母大写,俗称骆驼式命名法(也称驼峰命名法)

6)java变量无长度限制

【标识符命名规则】

3.拼接

使用"+"可以进行字符串和变量的拼接

4.数据类型

java是一种强类型语言,就是在java中存储的数据都是有类型的,而且在编译时就必须确定其类型

【java数据类型】

基本数据类型:存的是数据本身

引用类型变量:存的是保存数据的地址

几种数据类型的大小:

【几种数据类型的大小】

String 是一种常见的引用数据类型,用来表示字符串

5.变量使用规则

1)先声明后使用

2)可以在声明变量的同时进行初始化,也可以声明后赋值

3)每次只能赋一个值,但可以修改多次

4)main方法中定义的变量必须先赋值,然后才能输出

5)虽然语法中没有提示错误,但在实际开发中,变量名不建议使用中文,容易产生安全隐患,譬如后期跨平台操作时出现乱码等

6.自动类型转换

1)目标类型能与源类型兼容(如double型兼容int型,但char型不能兼容int型)

2)目标类型大于源类型(如double型长度为8字节,int型为4字节,因此double型的变量可以直接存放int型的数据,但反过来就不行)

7.强制类型转换

语法:(数据类型)变量名

如:

double avg1=75.8;

int avg2=(int)avg1;

8.常量

常量被设定后,在程序运行过程中不允许改变(以提高代码的可维护性)

语法:final 数据类型 常量名=值;

PS:常量名一般使用大写字符

9.注释

一般来说,对于一份规范的程序源代码而言,注释应该占到源代码1/3以上

文档注释:以/**开头,以*/结尾

多行注释:以/*开头,以*/结尾

单行注释:以//开头,行末结尾

可以在.java所在文件夹中利用以下命令来生成API帮助文档

javadoc -d doc zh.java

PS:其中doc为新建的文件名,zh.java为java文件名

打开doc文件打开index.html页面查看API文档

PS:使用文档注释时还可以使用javadoc标记,生成更详细的文档信息

@author 标明开发该模块作者

@version 标明该模块版本

@see 参考转向,也就是相关主题

@param 对方法中某参数的说明

@return 对方法返回值的说明

@exception 对方法可能抛出异常进行说明

运算符


1.常用运算符

1)算数运算符:+  -  *  /  %  ++  --

PS:自增和自减只能用于操作变量,不能直接用于操作数值或常量

2)赋值运算符:=  +=  -=  *=  /=  %=

3)比较运算符:>  <  >=  <=  ==  !=

PS:前四个只支持左右两边为数值类型,后两个既可以是数值类型,也可以为引用类型

4)逻辑运算符:&&  ||  !  ^

PS:^(异或)若a与b有且只有一个为true,则返回true

5)条件运算符:?:

2.运算符优先级

【运算符优先级】

PS:一般在实际开发中使用小括号辅助进行优先级管理

流程控制语句


1.条件语句

1)if

2)if...else

3)if...else if...else

4) 嵌套if

5)switch

switch(){

case 值1:代码块1;break;

case 值2:代码块2;break;

case 值3:代码块3;break;

......

default:默认执行的代码;

}

①switch后面小括号中的表达式的值必须是整型或字符型

②case后面的值可以是常量数值,如1、2;也可以是一个常量表达式,如2+2;但不能是变量或者带有变量的表达式

③如果遇见未break,则会继续执行下一个case块的内容,直到遇到break语句或switch语句块

④可以把功能相同的 case 语句合并起来

如:

case1:

case2:System.out.println(" ");

⑤default块可以出现在任何位置,也可以省略

2.循环语句

1)while

2)do...while

3)for

语法:for(循环变量初始化;循环条件;循环变量变化){循环操作}

比while、do...while语句结构更简洁易读

①循环变量初始化只执行一次

②三个表达式都可以省略,但";"不可以省略

a.省略循环变量初始化,可以在for语句之前由赋值语句进行变量初始化操作

b.省略循环条件,可能造成循环一直执行下去(死循环)

c.省略循环变量变化,可以在循环体中进行循环变量变化

③循环变量初始化、循环变量变化可以使用",",同时初始化多个变量和改变多个循环变量的值

④循环条件可以使用逻辑运算符组合的表达式

4)多重循环

3.循环跳转语句

1)break

2)continue

数组


1.一维数组

1)声明数组

语法:数据类型[] 数组名;

或 数据类型 数组名[];

2)分配空间

语法:数组名=new 数据类型 [数组长度];

声明数组并分配空间:数据类型[] 数组名=new 数据类型 [数组长度];

3)赋值

直接赋值(将声明数组、分配空间和赋值合并完成)

语法:数据类型[①] 数组名={...};

等价于 数据类型[①] 数组名=new 数据类型[②]{...};

PS:①②[]内必须为空

2.二维数组

1)声明数组

语法:数据类型[][] 数组名;

或 数据类型 数组名[][];

2)分配空间

语法:数组名=new 数据类型 [行数][列数];

声明数组并分配空间:数据类型[][] 数组名=new 数据类型 [行数][列数];

3)赋值

直接赋值(将声明数组、分配空间和赋值合并完成)

语法:数据类型[①][①] 数组名={{...},{...}};

等价于 数据类型[①][①] 数组名=new 数据类型[②][②]{{...},{...}};

PS:①②[]内必须为空

4)不规则二维数组

在定义二维数组时也可以只指定行的个数,然后再为每一行分别指定列的个数。如果行的列数不同,则创建的是不规则的二维数组,如:

int [][] num=new int[3][];

num[0]=new int[2];//为第1行分配2列

num[1]=new int[3];//为第2行分配3列

num[2]=new int[4];//为第3行分配4列

3.数组的长度

一维数组

元素个数:数组名.length

二维数组

行数:数组名.length

列数:数组名[i].length

4.Arrays类

在java.util包中,有Arrays类,是java中提供的一个工具类,须在源文件中加上:

import java.util.Arrays;

1)排序(升序):Arrays.sort(数组名);

2)将数组转换为字符串:Arrays.toString(数组名);

使用这种方法可将数组中元素拼接在一起,元素间用逗号和空格隔开,如[1, 2, 3, 4]

5.使用foreach操作数组

foreach 并不是 Java 中的关键字,是 for 语句的特殊简化版本,在遍历数组、集合时, foreach 更简单便捷。从英文字面意思理解 foreach 也就是“ for 每一个”的意思。

语法:for(元素类型 元素变量:遍历对象数组){...}

四、第三部分 java的方法

方法


1.定义方法

所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块

语法:访问修饰符 返回值类型 方法名(参数列表){方法体;}

1)访问修饰符

方法允许被访问的权限范围, 可以是 public、protected、private ,甚至可以省略 ,其中 public 表示该方法可以被其他任何代码调用。

2)返回值类型

如果方法不返回任何值,则返回值类型指定为 void ;如果方法具有返回值,则需要指定返回值的类型,并且在方法体中使用 return 语句返回值。

3)方法名

定义的方法的名字,必须使用合法的标识符(一般采用第一个单词字母小写,其他单词首字母大写的形式)。

4)参数列表

传递给方法的参数列表,参数可以有多个,多个参数间以逗号隔开,每个参数由参数类型和参数名组成,以空格隔开 。根据方法是否带参、是否带返回值,可将方法分为四类:

①无参无返回值方法

②无参带返回值方法

③带参无返回值方法

④ 带参带返回值方法

2.调用方法

语法:

先创建类的对象:类名 对象名=new 类名();

然后通过 对象名.方法名(参数列表); 来实现调用

3.带返回值方法

1) 如果方法的返回类型为 void ,则方法中不能使用 return 返回值

2) 方法的返回值最多只能有一个,不能返回多个值

3)方法返回值的类型必须兼容,例如,如果返回值类型为 int ,则不能返回 String 型值

4.带参方法

1) 调用带参方法时,必须保证实参的数量、类型、顺序与形参一一对应

2)调用方法时,实参不需要指定数据类型

3)方法的参数可以是基本数据类型,如 int、double 等,也可以是引用数据类型,如 String、数组等

5.方法的重载

定义:如果同一个类中包含了两个或两个以上方法名相同、方法参数的个数、顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了。.

执行:当调用被重载的方法时, Java 会根据参数的个数和类型来判断应该调用哪个重载方法,参数完全匹配的方法将被执行。

判断方法重载的依据:

1)必须是在同一个类中

2)方法名相同

3)方法参数的个数、顺序或类型不同

4)与方法的修饰符或返回值没有关系

五、第四部分 java的编程练习

编程练习


1.内容提示

使用Alt+/可以产生内容提示

【内容提示】

2.Scanner类

使用Scanner工具类可以获取用户输入的数据

1)导入java.util.Scanner

import java.util.Scanner;

2)创建Scanner对象(对象名一般为input)

Scanner 对象名=new Scanner(System.in);

3)接收并保存用户输入的值

int 变量名=对象名.nextInt();//获取输入的int型数据

Double 变量名=对象名.nextDou();//获取输入的double型数据

String 变量名=对象名.next();//获取输入的String型数据

3.输出

print不换行

println下一个换行输出

4.断点调试

1)双击程序行前的竖条出现圆点

【双击出现圆点】

2)点击工作栏中debug

【debug】

3)单步跳入(多次点击,从这句代码开始一步步执行)

【单步跳入】

PS:若进入调试视图,需要返回java视图,可点击如下按钮

【调整视图】

5.Math类

Math类是用于进行算术操作的类,Math.random()生成0--1的浮点数。

通过(int)(Math.random()*100)生成100以内的随机int型数

6.编程练习

要求:编写一个 JAVA 程序,实现输出考试成绩的前三名

1)考试成绩已保存在数组 scores 中,数组元素依次为 89 , -23 , 64 , 91 , 119 , 52 , 73

2)要求通过自定义方法来实现成绩排名并输出操作,将成绩数组作为参数传入

3) 要求判断成绩的有效性( 0—100 ),如果成绩无效,则忽略此成绩

package com.imooc;

public class sort1 {

//完成 main 方法

public static void main(String[] args) {

int scores[]={ 89 , -23 , 64 , 91 , 119 , 52 , 73};

sort1 a=new sort1();

a.Sort(scores);

}

//定义方法完成成绩排序并输出前三名的功能

public int[] Sort(int[] score){

int t;

for(int i=0;i<score.length;i++){

for(int j=i+1;j<score.length;j++){

if(score[i]>score[j]){

t=score[i];

score[i]=score[j];

score[j]=t;

}

}

}

for(int i=score.length-1,count=0;i>=0;i--){

if(score[i]<0||score[i]>100)continue;

count++;

if(count>3)break;

System.out.println(score[i]);

}

}

}

六、心得体会

虽然这段时间事情比较多,但还是挤出时间将这个课程看完了。

总的来说,这门课程属于入门级别,对于有c++基础的我来说,还是比较简单的。学习完这门课,我对java有了一个初步的了解,了解了其数据类型以及它们可以进行的操作,了解了方法的使用方法,同时还下载了Eclipse,并进行了简单的编程,掌握了一些小技巧和开发中应注意的问题。虽然说和c++语法相似,但还是有一些不同的地方,也收获到了不少东西。学习到的知识点全部在上文中一一列出,不再赘述。

下面谈一谈我在此次课程的学习当中掌握的学习方法:

1.时间这种东西,挤挤还是会有的

既然有兴趣学习这个,那就坚持下去,不要半途而废,做到每一天都花一些时间在这方面,这样就不容易遗忘,因为变成这种东西知识点较多,如果不把学习到的东西融会贯通,不进行实践,就容易生疏,就会有学了也像没学的感觉。

2.要学会独立思考

不独立思考的后果是:只能读懂别人的代码,而如果让自己来做,却完全没有思路,再去看别人的代码,却又总是一副茅塞顿开的感觉。所以,独立思考很重要,需要我们自己去理清思路,找到解决问题的办法。如果仍然没有思路,可以自己去网上搜索,如果还是没有答案的话,再去问其他人,只有这样,才能得到更大的进步。

3.在解决问题前,要列出解题思路

先观察问题思考需要通过几个步骤能够达到要求,然后思考需要定义并调用怎样的方法,需要什么变量,进行什么操作。然后可以通过伪代码的方式,写出大致的程序,再将其转换成完整的源代码。这样做能够提高变成效率。

4.记得注释

一定要记得注释,注释很重要,要不然每次回头看自己的程序时都是一头雾水,完全不知道自己当时为什么那样做。这就又要花费时间,把自己的程序再理一遍。有了注释就可以大大地减少这些时间的耗费。

5.养成写学习总结的习惯

这种学习方法以前还真没试过,以前的学习方式都是听讲看书做笔记,做完笔记,笔记本也就放在那了,并没有起到什么作用,记笔记完全是图个心安。这样,即便是记了笔记,也无法降低你遗忘的速度。而写学习总结这种方法,强迫你自己去看笔记、去回忆你此次学习的内容,这样,就达到了一个巩固的作用,也就是复习了一遍,可以记得更牢。上文的知识点,都是从此次学习的笔记整理而来的。

Java入门第一季学习总结的更多相关文章

  1. JAVA入门第一季(mooc-笔记)

    笔记相关信息 /** * @subject <学习与创业>作业1 * @author 信管1142班 201411671210 赖俊杰 * @className <JAVA入门第一季 ...

  2. Java入门第二季学习总结

    课程总概 该门课程作为java入门学习的第二季,是在有一定的java基础上进行的进一步学习.由于该季涉及到了java的一些核心内容,所以相对第一季来说,课程难度有所提升.大致可将该季的课程分为五部分: ...

  3. Java入门第一季——从此投身Java??

    找工作告一段落. 最后的工作呢,和java紧密相关,也是阴差阳错,不过都是软件开发,都好了,不过以后侧重点肯定是在java这边,php有机会还是一直学下去的,那么美的说~ Java开发第一季  一.简 ...

  4. Java入门第一季

    慕课网:http://www.imooc.com/learn/85 Java入门知识第一季 1.Java开发环境和IDE的使用: 2.变量和常量 3.常用的运算符 4.流程控制语句 5.数组:使用Ar ...

  5. 《java入门第一季》之Arrays类前传(排序案例以二分查找注意的问题)

    根据排序算法,可以解决一些小案例.举例如下: /* * 把字符串中的字符进行排序. * 举例:"dacgebf" * 结果:"abcdefg" * * 分析: ...

  6. 《java入门第一季》之面向对象(谈谈接口)

    软件中有接口,这里的接口与硬件中的接口还是有很大区别的. 这里介绍接口不考虑JDK8的新特性(JDK8开始接口里面可以有非抽象方法了,介绍JDK8新特性可能要到整个第一季写完吧!) 还是直接进入接口的 ...

  7. 《java入门第一季》之java语法部分小案例

    到这里举一个小例子把语法部分梳理一下,下一节开始进入java正式基础--面向对象的学习整理. 案例: /* 某个公司采用公用电话传递数据信息,数据是小于8位的整数,为了确保安全, 在传递过程中需要加密 ...

  8. Java入门 第一季第二章 变量和常量

    这是我学习慕课网Java课程的笔记.原视频链接为:http://www.imooc.com/learn/85 2-1 Java中的keyword PS:Javakeyword区分大写和小写 2-2 认 ...

  9. 慕课网-Java入门第一季-7-4 编程练习

    来源:http://www.imooc.com/code/1634 小伙伴们,请根据所学知识,参考注释,在代码编辑器中将代码补充完整.编写一个 Java 程序,实现输出学生年龄的最大值 要求: 1. ...

随机推荐

  1. Laravel进行数据库迁移(migration)

    迁移(migration) 文档的简介是:迁移就像数据库的版本控制,允许团队简单轻松的编辑并共享应用的数据库表结构,迁移通常和 Laravel 的结构构建器结对从而可以很容易地构建应用的数据库表结构. ...

  2. Solr full improt时遇到的问题

    安装和配置solr转载于:https://blog.csdn.net/u010510107/article/details/81051795jdk1.8 solr7.2 mysql8.0.17-bin ...

  3. python内置模块(time模块)

    常用的python内置模块 一.time模块 在python的三种时间表现形式: 1.时间戳,给电脑看的. - 自1970-01-01 00:00:00到当前时间,按秒计算,计算了多少秒. impor ...

  4. Gitee使用方法

    原文链接:https://www.cnblogs.com/yiven/p/8465054.html 1.创建仓库: a.创建远程仓库 登入Gitee后,点击头像旁边的"+"加号-- ...

  5. js获取高度和宽度

      CreateTime--2017年7月24日10:15:47Author:Marydon js获取高度和宽度 参考连接:http://www.cnblogs.com/EasonJim/p/6229 ...

  6. JDK动态代理、CGLIB动态代理详解

    Spring的AOP其就是通过动态代理的机制实现的,所以理解动态代理尤其重要. 动态代理比静态代理的好处: 1.一个动态代理类可以实现多个业务接口.静态代理的一个代理类只能对一个业务接口的实现类进行包 ...

  7. HTTP服务器(1)

    import socket def service_client(new_socket): """为这个客户端返回数据""" # 1. 接收 ...

  8. Swagger : API JSON 文件 转 PDF 问题总结

    1.  swagger API 转 PDF 具体请参考:woshihoujinxin/swagger-gendoc 2. 问题总结 接口方法值返回值为  void 类型时, @ApiOperation ...

  9. CSS、Bulma介绍

    文章目录 一.序章 二.CSS 基础 1. CSS 介绍 2. CSS 语法 3. CSS常用元素 1.颜色 2.字体大小 3.宽高 4.盒模型(单独拿出来讲) 5.背景 4.1样式和内容分离 4.2 ...

  10. Anaconda 改为国内镜像的方法

    Anaconda的conda 特别好用 但如果用国外的镜像,慢的出奇 可以改为了国内镜像会好很多 conda config --add channels https://mirrors.tuna.ts ...