java基础复习
Java之父詹姆士,高司林,最早做Green项目
- 使用C++来制作
- 使用c++制作起来比较麻烦
- 推出了Oak语言,已经被抢注了
- 改名为java
sun公司2009年以74亿美金卖个Oracle
1.JAVASE是java标准版
2.JAVAEE是java的企业版
3.JAVAME是java微型版
一个java程序只能有一个入口
书写的java代码的文件后缀是.java
运行时先编译成.class文件然后在被jvm执行
print不换行输出 println换行输出
转义字符
\n表示换行,\"表示一个双引号,\\表示一个\
转义字符表示一个字符
注释:
//单行注释
注意问题:多行注释和文档注释中不能包含多行注释
/*多行注释*/
/**
文档注释
*/
数据类型:
1.浮点类型(double,float);float类型后跟字母f
2.整型(byte,short,int,long);long类型后跟字母L
3.字符(char);字符类型只能使用单引号
4.布尔类型(boolean)
面试题问String是不是基本数据类型?不是
Byte是不是基本数据类型?是
变量的运算:
- 加,减,乘,除,求余数(求模)
当不同范围类型数据运算时,结果是范围最大的那个类型 - 自增和自减
如果变量在前先赋值再自增,
如果变量在后先自增再赋值 - 大于,大于等于(>=),小于,小于等于(<=),等于等于(==),不等于(!=)
- 逻辑与(&&),逻辑或(||),逻辑非(!)
- 三元运算符:(条件)?值1:值2
运行流程如果条件为真返回值1,否则返回值2
字符串
对于字符串来说称为连接符;当字符串和非字符串拼接时,会自动把非字符串转换成字符串
数据类型的转换(重点)
=称为赋值运算符,把等号右边的值赋给左边;
范围小的可以直接赋值给范围大的
范围大的不能直接赋值给范围小的
如果非要把范围大的赋值给范围小的需要强制类型转换简称强转
面试题:i++和i=i+1的区别
如果i是int类型没有区别
如果是byte,short类型,使用i++时会自动类型转换
如果是byte,short类型,使用i = i + 1时需要手动类型转换
选择分支结构
- if语句,if…else语句,if…else if语句switch语句
如果条件为真执行大括号中的语句
if(score >= 60) {
System.out.println(“及格”);
}
循环结构
- for语句,while语句,do…while语句
面向对象
对象:现实中客观存在的事物
java中的名言:万事万物皆对象
对象所属的分类称为“类”
现实生活中先有对象,然后对对象进行分类
在java中先有类,然后才有对象
类无法直接使用,因为类是抽象的
对象可以直接使用,因为对象是具体的
对象 = 属性 + 方法
类 = 属性 + 方法
学习面向对象的思路
1.如何定义类
2.定义类中的属性
3.定义类中的方法
4.如何定义对象
5.如何通过对象调用属性
6.如何通过对象调用方法
7.面向对象语言的特征:继承,多态,封装
8.java面向对象的关键字
一.如何定义类
语法格式:
public class 类名{}
类名的定义和变量的命名格式相同,首字母必须大写
1.类名只能使用字母,数字,下划线,并且不能以数字开头
2.类名不能和关键字相同
3.类名要有意义,尽量使用英文
4.如果类名有多个单词,首字母大写以后每个单词首字母也大写
public class Person {
}
二.如何定义类中的属性
变量类型 变量名;
一般情况下不赋值,除非项目需要
三、如何定义类中的方法
定义方法的格式:
public void 方法名(){语句}
方法名定义格式和变量名相同
注意问题:在同一个类中不能出现同名属性,同名同参数方法
四.如何定义对象
1)定义一个测试类命名规则TestXXX或者是XXXTest
2)书写main方法
3) 类名 对象名 = new 类名();
一个类可以创建多个对象
对象存在于堆内存中
五.如何使用对象调用属性
语法格式:对象名.属性名
六.如何调用方法
语法格式:对象名.方法名()
对于属性来说,当不赋值时会有默认值
1.整数的默认值是:0
2.小数的默认值是:0.0
3.布尔类型的默认值是:false
4.char类型的默认值是空格
5.除此之外的默认值都是null
引用数据类型的默认值都是null
局部变量和全局变量
1.局部变量:定义在方法内部的变量
使用范围:当前方法内部
2.全局变量(属性):定义在方法外部的变量
使用范围:当前类的内部
特例:如果全局变量和局部变量同名时优先使用局部变量
如果非要使用全局变量给同名局部变量添加this.
课堂练习:定义一个Girl类,必须添加show方法显示对象信息(略)
深入学习方法
1.带参数的方法
参数:完成某个功能需要的数据
语法格式:public void 方法名(参数类型1 参数名1,参数类型2 参数名2…){}
参数也是局部变量,只能当前方法内部使用
2.如何调用有参数的方法
对象名.方法名(参数值1,参数值2…)
要求参数值的个数、类型和类中方法的参数类型、参数个数保持一致
3.定义方法时的参数称为形式参数,简称形参
调用方法时的参数称为实际参数,简称实参
要求形参列表和实参列表保持一致
返回值:当完成某个功能后返回的数据
public 返回值类型 方法名(参数){语句;return语句}
void表示该方法没有返回值
表示该方法必须返回int类型的数据
public int add
如果有返回值类型的方法中有选择分支结构的语句
要求每一条分支都要有return,而且类型必须匹配
如何使用有返回值的方法
1.直接输出
注意:如果方法没有返回值则不能输出
方式二:用变量保存返回值(开发常用)
课堂练习1:定义一个方法,可以判断一个数是奇数还是偶数,并把结果返回
思路:1.考虑参数:有一个参数 2.考虑返回值类型:String类型
课堂练习2:定义一个方法,判断是否成功登陆的方法,参数有用户名和密码
如果用户名是admin,密码是abc123返回登陆成功,否则返回登陆失败
思路:1.有两个String类型的参数 2.返回值类型也是String类型
return的注意事项
1.在java中,一个return只能返回一个值
以下写法都是错误的
public int add(int a, int b){
return a + b,a * b;
return a - b;
}
2return除了返回值以外,还有结束方法的作用,其后不能跟任何代码
3. 在有void方法中也可以使用return,只表示方法结束,其后不能跟任何值
方法的重载(Overload)
在同一个类中,方法名相同,参数个数或者参数类型不同
,我们把这种现象就称为方法的重载
调用时可以通过开发工具选择对应的方法
重载的应用场景
println方法是一个重载的方法,可以按住ctrl,通过鼠标左键点击观察
课后练习:
1.定义一个ClassRoom类,要求有班级名称,班级人数,实到人数,必须定义show方法,显示班级信息,定义一个统计迟到人数的方法,要求至少创建两个对象,并测试
2.定一个圆类,定义一个方法,计算圆的面积和周长
3.定义一个学生类,要求有学号,姓名,年龄,所在班级,必须定义show方法、显示学生信息,定义一个成绩的方法,可以统计三门成绩的总和和平均成绩,定义一个重载的方法,可以统计四门成绩的总和和平均成绩
构造方法
在创建一个类时,默认会自动生成 public 类名(){}
我们把以上代码就称为构造方法
完整构造方法格式
public 类名(参数){语句}
如果程序员指定了构造方法,就不会自动生成
默认的构造方法
构造方法也可以重载
如果程序员指定了有参数的构造方法
那么创建对象时必须传递参数,否则报错
构造方法只能是创建对象时被调用
每创建一次对象就会调用一次构造方法
构造方法的作用
- 完成初始化工作
- 构造方法作用二:给属性初始化,从而简化代码
第一步有几个属性就写几个参数,参数名和属性名保持一致
public Book(String name, int page, float price){
第二步给属性赋值
= 表示赋值,把等号右边的值赋值给等号左边
把参数值赋值给属性
课堂练习:定义一个手机类,有名称,颜色,价格,屏幕尺寸,重量,
要求通过构造方法给属性初始化,要求通过show方法显示手机对象的信息
创建两个对象并测试
课后练习:
1.定义一个老师类,有工号,姓名,性别,年龄,工资,补助
通过构造方法给老师对象属性赋值,通过show方法显示老师的信息
2.定义一个汽车类,有品牌,颜色,价格,座位数,重量要求定义三个构造方法,第一个构造方法是默认构造方法,第二个构造方法只需要给品牌和颜色赋值,第三个构造方法要求给所有属性赋值
通过show方法显示汽车的信息
生成构造方法的快捷键
idea的快捷键:alt + insert->constructor然后选择给哪些属性赋值
eclipse的快捷键alt + shift + s->松手按c会生成无参构造方法
eclipse的快捷键alt + shift + s->松手按o会生成有参构造方法