詹姆斯·高斯林(James Gosling)1977年获得了加拿大卡尔加里大学计算机科学学士学位,1983年获得了美国卡内基梅隆大学计算机科学博士学位,毕业后到IBM工作,设计IBM第一代工作站NeWS系统,但不受重视。后来转至Sun公司,1990年,与Patrick,Naughton和Mike Sheridan等人合作“绿色计划”,后来发展一套语言叫做“Oak”,后改名为Java。 初学者敲打代码: 首先定义一个类 public class 类名 在类定义后加上一对大括号 {} 在大括号中间添加一个主(main)方法/函数 public static void main(String [] args){ } 在主方法的大括号中间添加一行输出语句 System.out.println(“HelloWorld”); public class HelloWorld { public static void main(String[] args) { System.out.println("HelloWorld"); } } 运行代码步骤: • 在命令行模式中,输入javac命令对源代码进行编译,生成字节码文件 – javac 源文件名.java • 编译完成后,如果没有报错信息,输入java命令对class字节码文件进行解释运行,执行时不需要添加.class扩展名 – java HelloWorld 敲打代码的逻辑性很重要以及前期的安装开发环境 1.1.1 计算机存储单元变量是内存中的小容器,用来存储数据。那么计算机内存是怎么存储数据的呢?无论是内存还是硬盘,计算机存储设备的最小信息单元叫“位(bit)”,我们又称之为“比特位”,通常用小写的字母b表示。而计算机最小的存储单元叫“字节(byte)”,通常用大写字母B表示,字节是由连续的8个位组成。 除了字节外还有一些常用的存储单位,大家可能比较熟悉,我们一起来看看: – 1B(字节) = 8bit – 1KB = 1024B – 1MB = 1024KB – 1GB = 1024MB – 1TB = 1024GB 1.1 算数运算符• 运算符 对常量和变量进行操作的符号称为运算符 • 表达式 用运算符把常量或者变量连接起来符号java语法的式子就可以称为表达式。不同运算符连接的式子体现的是不同类型的表达式。 定义两个int类型的变量a,b,做加法(a + b) • 常用运算符 算术运算符 赋值运算符 关系运算符 逻辑运算符 三元运算符 1.1.1 代码案例三package com.itheima_01; /* * 运算符:对常量和变量进行操作的符号 * 表达式:用运算符连接起来的符合java语法的式子。不同类型的运算符连接起来的式子是不同的表达式。 * 举例:定义两个int类型的变量a,b, * a + b * * 运算符分类: * 算术运算符,赋值运算符,关系运算符,逻辑运算符,三元运算符。 * * 算术运算符: * +,-,*,/的基本使用 */ public class OperatorDemo { public static void main(String[] args) { // 定义两个变量 int a = 3; int b = 4; System.out.println(a + b); System.out.println(a - b); System.out.println(a * b); System.out.println(a / b); // 整数相除只能得到整数,要想得到小数,就必须有浮点数参与运算 System.out.println(3 / 4.0); System.out.println(3.0 / 4); } } 1.1.2 If语句格式1及执行流程if语句第一种格式: if(关系表达式) { 语句体 } 执行流程: 首先判断关系表达式看其结果是true还是false 如果是true就执行语句体 如果是false就不执行语句体 1.1.3 if语句实现获取两个数据较大值1.1.4 代码案例五package com.itheima_02; import java.util.Scanner; /* * 键盘录入两个数据,获取这两个数据的较大值 * * 分析: * A:看到键盘录入,我们就应该想到键盘录入的三步骤 * 导包,创建对象,接收数据 * B:获取这两个数据的较大值,其实就是判断两个数据谁大,把大的输出就可以了。 * * 导包: * A:手动导包 * import java.util.Scanner; * B:鼠标点击红色叉叉,自动生成 * C:快捷键(推荐) * ctrl+shift+o */ public class IfTest { public static void main(String[] args) { //创建对象 Scanner sc = new Scanner(System.in); //接收数据 System.out.println("请输入第一个数据:"); int a = sc.nextInt(); System.out.println("请输入第二个数据:"); int b = sc.nextInt(); //采用if语句格式2实现 /* if(a>b){ System.out.println("较大的值是:"+a); }else { System.out.println("较大的值是:"+b); } */ //拿到较大的值之后,我未必想直接输出,所以我们定义变量接收这个较大的值 int max; if(a>b){ max = a; }else { max = b; } //可能做其他的操作 //max += 100; System.out.println("较大的值是:"+max); } } 1.2 产生整数随机数1.2.1 Random的使用步骤我们想产生1~100(包含1和100)的随机数该怎么办呢? 我们不需要自己去写算法,因为Java已经为我们提供好了产生随机数的类---Random: 作用: – 用于产生一个随机数 • 使用步骤(和Scanner类似) – 导包 • import java.util.Random; – 创建对象 • Random r = new Random(); – 获取随机数 • int number = r.nextInt(10); 1.3 数组概述需求:现在需要统计某公司员工的工资情况,例如计算平均工资、找到最高工资等。假设该公司有80名员工,用前面所学的知识,程序首先需要声明80个变量来分别记住每位员工的工资,然后在进行操作,这样做会显得很麻烦。为了解决这种问题,Java就提供了数组供我们使用。 那么数组到底是什么呢?有什么特点呢?通过上面的分析:我们可以得到如下两句话: 数组是存储多个变量(元素)的东西(容器) 这多个变量的数据类型要一致 1.4 数组的定义格式1.4.1 数组概念数组是存储同一种数据类型多个元素的容器。 数组既可以存储基本数据类型,也可以存储引用数据类型。 1.4.2 数组的定义格式格式1:数据类型[] 数组名; 格式2:数据类型 数组名[]; 注意:这两种定义做完了,数组中是没有元素值的。 1.5 数组的初始化1.5.1 数组初始化概述:Java中的数组必须先初始化,然后才能使用。 所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。 1.5.2 数组的初始化方式1.5.2.1 动态初始化:初始化时只指定数组长度,由系统为数组分配初始值格式:数据类型[] 数组名 = new 数据类型[数组长度]; 数组长度其实就是数组中元素的个数。 举例: int[] arr = new int[3]; 解释:定义了一个int类型的数组,这个数组中可以存放3个int类型的值。 1.6 方法定义格式及格式解释1.6.1 方法的概述假设有一个游戏程序,程序在运行过程中,要不断地发射炮弹(植物大战僵尸)。发射炮弹的动作需要编写100行的代码,在每次实现发射炮弹的地方都需要重复地编写这100行代码,这样程序会变得很臃肿,可读性也非常差。为了解决代码重复编写的问题,可以将发射炮弹的代码提取出来放在一个{}中,并为这段代码起个名字,这样在每次发射炮弹的地方通过这个名字来调用发射炮弹的代码就可以了。上述过程中,所提取出来的代码可以被看作是程序中定义的一个方法,程序在需要发射炮弹时调用该方法即可 简单的说:方法就是完成特定功能的代码块 在很多语言里面都有函数的定义 , 函数在Java中被称为方法 1.6.2 方法格式修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) { 函数体; return 返回值; } 1.6.3 方法格式解释修饰符 目前记住 public static 返回值类型 用于限定返回值的数据类型 方法名 一个名字,为了方便我们调用方法 参数类型 用于接收调用方法时传入的数据的类型 参数名 用于接收调用方法时传入的数据的变量 方法体 完成功能的代码 return 结束方法,把返回值带给调用者 1.7 求和方法的编写1.7.1 定义方法注意事项写一个方法首先有两点需要明确 返回值类型 明确功能结果的数据类型 参数列表 明确有几个参数,以及参数的类型 按照格式和两个明确来完成如下功能 1.7.2 案例代码二/ * * 方法的两个明确: * A:返回值类型 明确功能结果的数据类型 * B:参数列表 明确有几个参数,以及参数的类型 * * 案例: * 求两个数和的案例。 */ public class MethodDemo { /* * 写一个方法,用于求和。 两个明确: 返回值类型 int 参数列表 int a,int b */ public static int sum(int a, int b) { // int c = a + b; // return c; return a + b; } public static void main(String[] args) { } } 1.7.3 方法的形式参数是基本类型图解1.8 file:///C:\Users\ADMINI~1.PC-\AppData\Local\Temp\ksohtml\wps2542.tmp.jpgEclipse断点调试概述 Eclipse的断点调试可以查看程序的执行流程和解决程序中的bug 1.9 Eclipse断点调试常用操作: A:什么是断点: 就是一个标记,从哪里开始。 B:如何设置断点: 你想看哪里的程序,你就在那个有效程序的左边双击即可。 C:在哪里设置断点: 哪里不会点哪里。 目前:我们就在每个方法的第一条有效语句上都加。 D:如何运行设置断点后的程序: 右键 -- Debug as -- Java Application E:看哪些地方: Debug:断点测试的地方 在这个地方,记住F6,或者点击也可以。一次看一行的执行过程。 Variables:查看程序的变量变化 ForDemo:被查看的源文件 Console:控制台 F:如何去断点: 再次双击即可 找到Debug视图,Variables界面,找到Breakpoints,并点击,然后看到所有的断点,最后点击那个双叉。 1.10 面向对象思想1.10.1 面向过程思想与面向对象思想A:什么是面向过程 面向过程,其实就是面向着具体的每一个步骤和过程,把每一个步骤和过程完成,然后由这些功能方法相互调用,完成需求。 例如:吃煎饼果子利用面向过程的思想: 1.学习摊煎饼的技术 2.买材料鸡蛋,油,葱等等 3.开始摊 4.吃 5.收拾 B:什么是面向对象 面向对象思想就是不断的创建对象,使用对象,指挥对象做事情。(如果有对象,直接用对象,对我们直接提供服务) 例如:吃煎饼果子利用面向对象的思想 1. 找会摊煎饼的大妈(创建一个摊煎饼大妈的对象) 2. 调用其摊煎饼的技能(功能),传递进去钱参数 3. 返回给我们一个煎饼 4. 吃 1.10.2 面向过程特点与面向对象特点A:面向过程: 强调的是过程,所有事情都需要自己完成 B:面向对象: 是一种更符合我们思想习惯的思想(懒人思想,我把事情自己不做,交给别人去做) 可以将复杂的事情简单化(对使用者来说简单了,对象里面还是很复杂的) 将我们从执行者变成了指挥者角色发生了转换 1.11 类与对象及其使用:1.11.1 类与对象概述:A:我们学习编程是为了什么 为了把我们日常生活中实物用学习语言描述出来 B:我们如何描述现实世界事物 属性 就是该事物的描述信息(事物身上的名词) 行为 就是该事物能够做什么(事物身上的动词) C:Java中最基本的单位是类,Java中用class描述事物也是如此 成员变量 就是事物的属性 成员方法 就是事物的行为 D:定义类其实就是定义类的成员(成员变量和成员方法) a:成员变量 和以前定义变量是一样的,只不过位置发生了改变。在类中,方法外。 b:成员方法 和以前定义方法是一样的,只不过把static去掉,后面在详细讲解static的作用。 E:类和对象的概念 a:类:是一组相关的属性和行为的集合(我们班所有的同学都具备相同的属性和行为,比如:姓名,年龄,学习,这样就把所有的学生成为学生类) b:对象:是该类事物的具体体现(说某个同学时,他都具备自己特有的属性和行为) c:举例: 类 学生 对象 具体的某个学生就是一个对象 比如:车是一个类,具体的开的奔驰、宝马,就是对象 1.12 API概念API(Application Programming Interface) : 应用程序编程接口 编写一个机器人程序去控制机器人踢足球,程序就需要向机器人发出向前跑、向后跑、射门、抢球等各种命令,没有编过程序的人很难想象这样的程序如何编写。但是对于有经验的开发人员来说,知道机器人厂商一定会提供一些用于控制机器人的Java类,这些类中定义好了操作机器人各种动作的方法。其实,这些Java类就是机器人厂商提供给应用程序编程的接口,大家把这些类称为API。本章涉及的Java API指的就是JDK中提供的各种功能的Java类 1.13 快速使用API步骤:A:打开帮助文档 B:点击显示,找到索引,看到输入框 C:你要学习什么内容,你就在框框里面输入什么内容 举例:Random D:看包 java.lang包下的类在使用的时候是不需要导包的 E:看类的描述 Random类是用于生成随机数的类 F:看构造方法 Random():无参构造方法 Random r = new Random(); G:看成员方法 public int nextInt(int n):产生的是一个[0,n)范围内的随机数 调用方法: 看返回值类型:人家返回什么类型,你就用什么类型接收 看方法名:名字不要写错了 看形式参数:人家要几个参数,你就给几个,人家要什么数据类型的,你就给什么数据类型的 int number = r.nextInt(100); 1.14 Scanner类1.14.1 Scanner类作用 用Scanner类的方法可以完成接收键盘录入的数据 1.14.2 Scanner类接受键盘录入的字符串1.14.2.1 案例代码一:package com.itheima_01; import java.util.Scanner; /* * Scanner:用于获取键盘录入的数据。(基本数据类型,字符串数据) * public String nextLine():获取键盘录入的字符串数据 */ public class ScannerDemo { public static void main(String[] args) { //创建键盘录入对象 Scanner sc = new Scanner(System.in); //接收数据 System.out.println("请输入一个字符串数据:"); String s = sc.nextLine(); //输出结果 System.out.println("s:"+s); } } 1.15 对象数组概述 A:基本类型的数组:存储的元素为基本类型 int[] arr={1,2,3,4} B:对象数组:存储的元素为引用类型 Student[] stus=new Student[3]; Student代表一个自定义类 Stus数组中stus[0],stus[1],stus[2]的元素数据类型为Student, 都可以指向一个Student对象 1.16 集合概述A:我们学习的是面向对象编程语言,而面向对象编程语言对事物的描述都是通过对象来体现的。 为了方便对多个对象进行操作,我们就必须对这多个对象进行存储,而要想对多个对象进行存储, 就不能是一个基本的变量,而应该是一个容器类型的变量。 B:到目前为止,我们学习过了哪些容器类型的数据呢? StringBuilder,数组。 StringBuilder的结果只能是一个字符串类型,不一定满足我们的需求。 所以,我们目前只能选择数组了,也就是我们前面学习过的对象数组。 但是,数组的长度是固定的, 如果有时候元素的个数不确定的,我们无法定义出数组的长度,这个时候,java就提供了集合类供我们使用。
|