北大X鸟|第一本书总结
第一章 初识Java
易错:
- public class 类名称 与 文件名称.java 必须相同
- void 不可少(这是无返回值的意思后面会讲)
- Java 对英文字母 大小写 敏感
- ; 注意英文的分号
- “ 注意英文的引号
- \t 为一个tab键
- \n 为换行
第二章 变量和数据类型
数据类型 | 含义 |
---|---|
int | 整型 |
double | 双精度浮点型 |
加粗样式 | 字符型 |
String | 字符串型 |
boolean | 布尔类型 |
变量声明
语法:
变量类型 | 变量名 | ; |
---|---|---|
int | time | ; |
##变量赋值
语法:
变量名 = 值; |
---|
time = 33; |
声明并赋值
语法:
数据类型 变量名 = 值; |
---|
char sex = ‘女’; |
扫描仪的使用
数据类型转换
-
自动数据类型转换 “放大转换”
条件:a.类型兼容 b.小转大
int score = 80;
double newScore = score; -
强制数据类型转换”缩小转换”
double score = 123.23;
int newScore – (int)score;
关系运算符
> | 小于 |
---|---|
>= | 小于等于 |
== | 等于 |
<= | 大于等于 |
!= | 不等于 |
算术运算符
+ | |
---|---|
- | |
* | |
/ | 取商 |
% | 取余 |
a++ | 先运算后自加 |
a- - | 先运算后自减 |
++a | 先自加后运算 |
- -a | 先自减后运算 |
赋值运算符
下面是Java语言支持的赋值运算符:
操作符 | 描述 | 例子 |
---|---|---|
= | 简单的赋值运算符,将右操作数的值赋给左侧操作数 | C = A + B将把A + B得到的值赋给C |
+ = | 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 | C + = A等价于C = C + A |
- = | 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 | C - = A等价于C = C - A |
* = | 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 | C * = A等价于C = C * A |
/ = | 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 | C / = A等价于C = C / A |
(%)= | 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 | C%= A等价于C = C%A |
逻辑运算符
&&
||
!
短路逻辑运算符
当使用与逻辑运算符时,在两个操作数都为true时,结果才为true,但是当得到第一个操作为false时,其结果就必定是false,这时候就不会再判断第二个操作了。
条件运算符(?:)
条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。
语法:
变量x | = | (表达式) ? 值若为真 : 值若为假; |
---|
int a , b;
a = 10;
// 如果 a 等于 1 成立,则设置 b 为 20,否则为 30
b = (a == 1) ? 20 : 30;
System.out.println( "Value of b is : " + b );
//因为a=10,不为1,所以是false,b=30
优先级:算术>关系.>逻辑
第四章 选择结构
if选择结构
ifelse选择结构
elseif多重选择
嵌套if选择
switch选择结构
[0,10 )的随机数
小结:if处理范围 switch处理定值
处理系统异常
如何让其输入数字hasNextInt判断判断是否输入为数字
第五章 循环结构
while循环
do-while循环
for循环
程序调试
- 分析错误,设置断点
- 启动调试,单步执行 点虫子
- 观察变量
- 消灭虫子
F5单步跳入 会进入本行代码内部执行
F6单步跳过 就执行你看见的本行代码,执行完跳到下一行
break 跳出循环体
continue跳出当前循环,进行下一次循环
return 跳出当前方法 返回一个值
第八章 数组
- 标识符
- 数组元素
- 数组下标
- 元素类型
如何使用数组
声明数组
语法:
数据类型[] | 数组名; |
---|---|
int[] | scores; |
分配空间
语法:
数组名 | = | new | 数据类型[数组长度]; |
---|---|---|---|
scores | = | new | int[30]; |
声明并分配空间
语法:
数据类型[] | 数组名 | = | new | 数据类型[数组长度]; |
---|---|---|---|---|
int[] | scores | = | new | int[30]; |
赋值
语法:
数组名[下标值] | = | XXX; |
---|---|---|
scores[12] | = | 98; |
声明分配空间并且赋值
语法
数据类型[] 数组名 | = | {值1,值2,值3}; |
---|---|---|
int | scores[] | = |
也等价于 | ||
int scores[] | = | new int[] {213,43,542,13}; |
注意int[这里为空] |
数组元素初始值
char | ‘\u0000’ |
---|---|
boolean | false |
数组排序
语法
Arrays.sort(数组名);
排列出来后是升序 |
比较字符串大小
语法:
这个是无视了大小写的 |
---|
String1.compareToIgnoreCase(String2); |
如果1>2就返回1 |
等于返回0 |
小于为-1 |
第九章 二重循环
解释解释的话,就是循环里套循环
当然也可以for里套while
二重循环里的break和while
都是跳出本层循环
第十一章 类和对象
面向对象
Java是一种面向对象的编程语言(Object Oriented Programming Language,OOPL)
身边的对象
对象 | 静态特征 | 静态特征的值 | 动态特征 |
---|---|---|---|
顾客对象: | 姓名 | 小明 | 购买商品 |
收银员对象: | 员工号 | 10012 | 收款 |
对象的属性和方法
在面向对象的编程思想中,把对象多的 静态特征 和 动态特征
分别称为对象的对象的 属性 和 方法
对象:用来描述客观事物的一个实体,由一组属性和方法构成。
封装
就是把一个事物包装起来,并尽可能隐藏内部细节
对象具有封装性
类
类定义了对象会具有的属性(特征)和方法(行为)
类 | = | 抽象概念 |
---|---|---|
对象 | = | 实体 |
Java类的模板
- 不能使用Java中的关键字
- 不能包含任何嵌入的空格或“.”,以及除下划线“_”,字符“$”外的特殊符号
- 不能以数字开头
记忆法: 想赚钱下载apptry$_123
定义方法
访问修饰符 返回值类型 方法名(){
//方法体
}
方法或变量名 | 先小后大 |
---|---|
类 | 全大 |
如何创建和使用对象
创建
语法
类名 对象名 | = | new 类名(); |
---|---|---|
School sch | = | new School(); |
赋值
语法
对象名.属性 = xxx; |
---|
对象名.方法名(); |
sch.name = “孤独自学”; |
sch.Dream(); |
面向对象的优点
- 与人类思维一致
- 信息隐藏,提高了程序的可维护性和安全性
- 提高了程序的可重用性
第十二章 类的无参方法
什么是类的方法
如何定义类的方法
语法:
public 返回值类型 方法名(){
//方法的主体
}
方法名字先小后大
类名全大
方法执行后返回一个结果,结果的类型称为称为返回值类型,使用return语句返回
语法:
return 表达式;
方法的调用
语法:
对象名.方法名(); |
---|
AutoLion lion = new AutoLion();
Lion.run();
- 同一类中的方法,直接使用方法名调用该方法。
- 不同类的方法,先创建对象,再使用对象名.方法名()来调用
易错
- 返回值为void,方法不能有return
- return不能返回多个值(除非数组或对象什么的)
- 多个方法不能嵌套
- 不能在方法外部直接写 逻辑代码
变量的作用域
成员变量和局部变量
成员变量:在类中定义的变量称为类的成员变量
- 在类本身里可直接使用,其他类的方法要访问,在访问权限允许的情况下,必须先创建对象,然后通过”.”来引用,
- Java会给其赋默认值
局部变量:在方法中定义的变量称为局部变量
- 只能在本方法内使用
- Java不会给其赋默认值
- 同一个方法内不能有同名局部变量,不同方法里可以有
PS:局部变量可以和成员变量同名,并且在使用时,局部比成员具有更高的优先级
小声哔哔:除非你用this语句,可以选择调用同名的成员和局部变量
JavaDoc注释
/**
*@xxx
*/
File—export—导出—Java—JavaDoc
第十四章 带参数的方法
定义带参的方法
语法:
<访问修饰符> 返回值类型 <方法名> (<(参数列表)>){
//方法的主体
}
public void addName(String name){
//增加学生的姓名
}
调用带参方法
语法:
对象名.方法名(参数1,参数2……参数n)
要先实例化对象,再调用
实参的类型,数量,顺序要与形参一一对应
常见错误
- 在传递的实参前添加数据类型如show.sayHello(String name,int time)
- 实参形参数据类型不一致
- 实参形参数量不一致
- 有返回值但调用该方法后没有对返回值做任何处理
数组作为参数的方法
对象作为参数的方法
对象数组
包
用来分类管理
声明包
语法
package 包名 |
---|
package cn.gdzx.learning; |
导入包
语法
import 包名.类名; |
---|
import 包名.*; |
第十五章 字符串
String | |
---|---|
str.length() | 返回长度 |
str1.equals.str2 | 判断值相等 |
str.equalsIgnoreCase(str2) | 不区分大小写 |
str1.compareToIgnoreCase(str2) | 无视大小写 比较字符串顺序 1比2大返回1 等于为0 小于为-1 |
str.toUpperCase() | 转大写 |
str.toLowerCase() | 转小写 |
str1.contact(str2) | 连接字符串 等同于 + => str1+str2 |
str.indexOf(“1”) | 从前往后开始查找 字符 如果找到返回下标 未找到返回-1 PS:只返回第一次出现的下标 |
str.lastIndexOf(“1”) | 从后往前开始查找 字符 如果找到返回下表 未找到返回-1 PS:只返回第一次出现的下标 |
str.subString(0,5) | 截取字符串从下标0开始到5结束 ps:不包括下标5 |
str.trim() | 去除字符串前后空格 |
str.split(String类型 “分离的标志”,int类型 返回的个数) | 根据引号里的参数 拆分字符串,返回字符串数组有几个元素 |
StringBuffer | |
---|---|
toString() | 转成String类型 |
append("") | 追加 |
insert(0,“xx”) | 将字符串插入到指定位置 |