一周小结
Java基础语法
1.介绍
a)这部分课程的目标是掌握Java的基础语法
b)我们以开发BMI计算器为主要例子贯穿相关学习
1.安装Eclipse
a) Eclipse依赖于JDK/JRE,我们可以在window/preferences里面配置JDK/JRE,我们可以在window/preferences里面配置JDK/JRE
b) workspace可以存放很多项目和代码
2.使用Eclipse创建Hello程序
a)学习Eclipse的基本用法
b)Eclipse可以自己根据包创建文件夹
c)Eclipse可以自动编译,直接运行
d)Eclipse可以帮我们生成代码
3.Java注释
a)注释帮助程序员更好的看懂代码,不影响编译和执行
b)两种注释写法
i./**/可以写多行注释
ii.//只能写一行
c)注释有类注释,方法注释和方法内部注释
d)注释必要的时候添加;最好的注释就是清晰的代码(不用注释)
e)JDK自带的类包含很多注释,我们学习JDK的类的一种方式就是读它的注释
f)我们要学会自己看注释,自己点进去看代码
4.再次认识Java程序 – 类
a)Java程序是由类组成的
i.Java程序是由类组成的
ii.系统帮我们提供了很多类:我们要了解系统的类
iii.我们的同事可能会写很多类
iv.我们可以去网上下载类
v.我们自己会写很多类
vi.类与类之间相互调用(使用)来完成任务
5.再次认识Java程序 – 方法和语句
a) 类里面包含多个方法
i.类由方法组成
ii.方法包括方法声明,和方法体两部分
iii.方法声明包括返回值,名字,输入参数(包在小括号内),多个输入参数用逗号隔开,输入参数必须指定类型(用空格隔开);
b)语句
i.方法的代码是由一条条语句组成的
ii.语句必须以分号结尾
6.关键词
关键词是Java预留的具有特殊含义的词,比如class
关键词在eclipse中会有特殊颜色显示
java编译器通过关键词和语法解析java程序
关键词:class public void return int package
7.标识符
a)标识符的必须遵守的规则
肯定不能用关键词
标识符第一个字母必须是字母,下划线_,或者$
后面的字符可以是任何字符或者数字
标识符大小写敏感,name和Name
b)java的命名规范 - 驼峰命名法
i.多个单词直接连接在一起,中间不用下划线或者横杠等
ii.类名每个单词首字母大写
iii.变量名和方法名第一个单词首字母小写,其他单词大写
c)尽量让名字直观易懂
BodyMassIndexCalculator
9.变量
a)变量是存放数据的地方
b)变量都有具体的数据类型,不同类型的变量不能赋值
c)变量要先定义,再使用
d)变量通过=(赋值运算符)来赋值,可以直接赋值,也可以以后在赋值
e)变量的值可以改变
f)定义BMI必须的变量
10.变量的种类:属性变量和局部变量
a)属性变量,类除了有方法,还有属性
i.理解System.out.println(“”)
b)局部变量
i.只在方法中使用,是临时的数据存放的地方
11.常量
a)变量加上final关键词就可以了
使用常量来定义欢迎语句
12.数据类型
a)基本数据类型 – 8种
b)自定义数据类型class, interface, enum
a)几种不同的数字数据类型
//内存最小的单位是bit,1个bit只能存储一个0或者1.
//8个bit为1个byte字节
b)使用正确的数据类型改进bmi的变量值
14.数据类型转换
a)自动类型转换:
i.数字之间,从低精度到高精度可以自动转换;
ii.从高精度到低精度不能自动转换,因为会丢失精度
b)强制类型转换
c)类型转换可能会出错
B bb = (B)a;
15.字符串和字符
a)字符串使用双引号括起来(一定要用英文双引号)
b)变量名是不用双引号的,如果没加双引号,那必须是关键词或者变量
16.运算符
a)数字运算符
+ - * / %
b)比较运算符
== > < >= <=
c)逻辑运算符
&& || & |
d)其他运算符
e)计算bmi的值
17.取余运算符%
98 % 10 = 8 13 % 5 = 3
方法调用:方法名();
18.比较运算符
布尔值数据类型
a)只有true或者false两种
b)逻辑运算的结果是布尔型的的值
19.逻辑运算符
a)&&: 两个都是ture才是ture
b)||: 有一个true就是true
c)&: 按位与
d)|: 按位或
20.程序的三种执行方式
a)顺序执行
b)分支执行
i.if else ii.switc
c)循环执行
i.for ii.while
21.分支语句if else if else
22.使用if判断来实现bmi程序
23.变量的作用域
全局变量:整个类都可以使用。
局部变量:只有在自己所属于{}里面才可以使用。
全局变量和局部变量如果名字相同,优先使用局部变量。
局部变量不能命名冲突。除非两个局部变量在完全相互独立的{}内。
24.分支语句 switch case
a)语法
b)要加break,否则从头到尾会一直执行,直到遇到break为止
c)最后可以加default,不进行条件判断,可以直接走进去
d)只支持以下几种类型:int byte short char String Enum
e)在分支比较多的时候,优先使用switch
25.基础数据类型(int, byte等)所对应的对象
8种基本数据类型(primitive)
26.使用Scanner接收用户输入
import 是从别的包引入类。下面的两种不用import
java.lang
new 是创建对象/类的实例
Scanner sc = new Scanner(System.in);
27.循环语句 for
28.循环语句do while
29.完善bmi程序:使用while循环支持多次计算
30.使用DecimalFormat格式化bmi小数点到2位小数
字符串String
1.字符串的拼接
2种方法:使用+或者使用concat方法
一般情况下,2种方法都可以使用,没大区别
但如果要拼接成千上万个字符串,应该考虑StringBuffer或者StringBuild类,后面会学习这两个类
2.字符串的方法String
学会使用Eclipse查看源代码
学会使用outline查看所有的方法
length() charAt() 等等。。
3.字符串查找和替换
chartAt() replace(“are”, “is”)
复杂情况下应该使用正则表达式Regex
4.StringBuffer和StringBuilder
使用+号拼接字符串,每次拼接都会创建一个新的字符串,占用内容多,效率低
StringBuffer和StringBuilder在拼接过程中使用同一个对象,所以效率高。(append方法)。
StringBuffer是线程安全的,会防止多个线程同时访问String,它添加了额外的防护,所以比StringBuilder慢。
concat方法底层实现是StringBuilder.
数组
1.数组的概念,声明和创建
有20个朋友,需要安排住的地方。定了20个房间。yourHotel
yourHotel[1], yourHotel[2]…. yourHotel[20]
数组是存储固定长度,相同类型的元素集合的数据结构
数组的下标从0开始计算
3种方式:
int[] myIntArray = new int[3];
int[] myIntArray = {1,2,3};
int[] myIntArray = new int[]{1,2,3};
2.数组的访问和遍历
a)访问nums[3]
b)注意数组下标越界
java.lang.ArrayIndexOutOfBoundsException
c)获得数组长度使用length – 这是一个属性
3.for循环的第二种方式
只能应用在数组,List等集合数据结构上
4.Arrays和sort
Arrays.sort
5.二维数组
算法
1.算法概念
a)算法简单说就是解决问题的思路和步骤,对程序员至关重要
b)算法是独立于编程语言的
c)常用算法:各种排序算法等
d)简单例子:在数组里面查找某个元素是否存在?
有一个数组,里面保存了很多名字,我们查找一下tom是否存在?
2.数组 - 如何寻找一个数组中最大的或最小的值
i.先定义一个变量max,让它很小,比如-10000
ii.遍历这个数组,一个个比较过去,如果有一个比max大,就让max=这个数字
iii.最后max就是最大的
3.如何反转reverse一个数组?
int nums = {1,3,5,7,2,6}
方法1:再创建一个一样大的数组newNums。
newNums[length-i-1] = nums[i];
方法2:循环到数组长度的一半
int n = nums[i]
nums[i] = nums[length – i-1]
nums[length-i-1] = n
4.其他数组相关操作算法
a)如何合并两个数组?
b)如何在数组中删除1个元素?
{1,4,6,2,4,6,8}
c)如何在数组中添加一个元素?
{1,4,6,2,4,6,8}
{1,4,6,2,7,4,6,8}
d)如何判断两个数组是否相同?
先判断数组长度是否相同,如果相同再比较数组的每个元素是否相同
5.递归算法概念 – recursion
递归 Recursion – 简单说就是自己调用自己
递是传递给自己,自己调用自己
归是退出条件,在某些条件符合的时候,停止调用自己。如果没有退出条件会出现死循环,程序上会出现 java.lang.StackOverflowError
6.递归算法例子 –
什时候用递归:问题是重复的过程,可以被分解成更小的问题。
a)讲阶乘
b)关键是理清楚退出条件和传递方法
7.递归算法例子3 -讲斐波那契序列
1、1、2、3、5、8、13、21、34
在数学上,斐波纳契数列以如下被以递归的方法定义:
退出条件:F(1)=1,F(2)=1,
通用公式:F(n)=F(n-1)+F(n-2)(n > 2,n∈N*)
讲青蛙跳台阶问题
8.排序算法