1.关键字
1.关键字是被java赋予特定含义的单词
2.特点:组成关键字的字母全部小写
3.注意事项:我们在起名字的时候不能使用关键字
2.标识符
1).标识符的组成
1. 英文大小写字母
2. 数字
3. $和_
2).注意事项
1.不能使用关键字
2.不能以数字开头
3.如果你要使用符号,只能使用$和_
4).常见命名规则:
1. 包:把包理解成我们的文件夹,一般是公司域名倒着写,com.itheima,字母小写
2. 类或者接口
如果是一个单词,首字母大写
如果是多个单词,每个单词的首字母都大写
3. 方法或者变量
如果是一个单词,全部字母小写
如果是多个单词,从第二个单词开始首字母大写
4. 常量 EAT_APPLE
如果是一个单词,全部字母大写
如果是多个单词,每个单词之间用_分开
3.常量
字面值常量
字符串常量 用双引号括起来的内容
整数常量 所有整数
小数常量 所有小数
字符常量 用单引号括起来的内容,里面只能放单个数字,单个字母,单个符号
布尔常量 true,false
空常量 null
4..变量
1.变量是在程序执行的过程中,其值可以发生改变
2.用来不断的存放同一类型的常量,并可以重复使用
3.变量定义格式:数据类型 变量名 = 变量值;
5..数据类型
1).Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间
基本数据类型(四类八种)
整数型
byte 占1个字节 -128到127
short 占2个字节
int 占4个字节
long 占8个字节
浮点型(小数型)
float 占4个字节
double 占8个字节
字符型
char 占2个字节 0-65535
布尔型
boolean 他的值要么是true,要么是false
引用数据类型
6.运算符
1.算术运算符
基本的:+, -, *, /, %
关于+:
字符串与任何数据做加法运算,都会产生一个新的字符串
1.正号
2.进行加法操作
3.字符串的连接符:任何数据类型与字符串相连接都会变成一个字符串
关于/:
获取的是除法操作的商
注意:两个整数相除得到的一定是整数,如果要得到小数,将其中任意一个数变成小数即可
关于%:
方案一:
当左边的绝对值小于右边绝对值时,结果是左边
当左边的绝对值等于右边或是右边的倍数时,结果是0
当左边的绝对值大于右边绝对值时,结果是余数
%运算符结果的符号只和左边有关系,与右边无关
方案二:
获取的是除法操作的余数,其结果的符号只与左边有关,与右边无关,并且与左边数值的符号相同
特殊的:++ --
1.单独使用:放前放后一样
++:对原有的数据+1
--:对原有的数据-1
2.参与运算:放操作数前面,会先运算再赋值,放操作数后面,会先赋值再运算
2.赋值运算符
a.基本的:=
把=号右边的数据赋值给左边
int a = 4;
b.特殊的:+=,-=,*=,/=,%=
把运算符左边和右边的数据进行运算,再赋值给左边
3.关系运算符(也叫比较运算符,也叫条件运算符)
==,!=,>,>=,<,<=
注意事项:
1.无论你操作的数据是简单还是复杂,最终得到的结果都是boolean类型
2."==" 不能写成"="
4.逻辑运算符
1.基本的:&,逻辑与, 有false则false
|,逻辑或, 有true则true
^,逻辑异或, 相同为false,不同为true
!,逻辑非, 非false则true,非true则false
2.特殊的:&& ||
1.绝对不会影响结果;
2.能提升效率;
3.&&,短路与,左边为false,右边不执行,最终结果与&相同
||,短路或,左边为true,右边不执行,最终结构与|相同
7.流程控制语句_可以控制程序的执行流程
1.顺序结构
从上往下,依次执行
2.选择结构
2.1.if语句
1.if (比较表达式) {
语句体;
}
2.if (比较表达式) {
语句体1;
} else {
语句体2;
}
3.if (比较表达式1) {
语句体1;
} else if (比较表达式2) {
语句体2;
} else if (比较表达式3) {
语句体3;
} else if (比较表达式4) {
语句体4;
}
...
else {
语句体n + 1;
}
2.2.switch语句
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
...
default:
语句体 n + 1;
break;
}
3.循环结构
3.1.for循环
for (初始化表达式; 条件表达式; 循环后的操作表达式) {
循环体;
}
3.2.while循环
初始化表达式;
while(判断条件语句) {
循环体;
控制条件语句;
}
3.3.do...while循环
初始化语句;//int i = 1;
do {
循环体语句;
控制条件语句;//i++;
} while(判断条件语句);
8.控制跳转语句
1.break语句
1.跳出循环
2.停止switch
2.continue语句
跳过本次循环,继续下次循环
3.return语句
结束方法
9.方法
1.格式:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2) {
方法体语句;
return 返回值;
}
2.方法的格式说明:
a.修饰符:目前我们固定写public static
b.返回值类型:就是该方法需不需要返回一个结果,此处填的是该结果的数据类型,也可以没有,没有就写void
c.方法名:就是合法的标识符,针对方法,如果是一个单词全部字母小写,如果是多个单词,从第二个单词开始
首字母大写
d.参数:
形式参数:用于接收实际数据的变量
实际参数:实际参与运算的变量
e.参数类型:就是参数的数据类型
f.参数名:就是合法的标识符,针对变量,如果是一个单词全部字母小写,如果是多个单词,从第二个单词开始
首字母大写
g.方法体语句:就是完成特定功能的代码
h.return 结束方法
i.返回值,就是执行功能代码后的结果,由return带给调用者
10.方法重载
1.在同一个类中,方法名相同,参数列表不同,与返回值类型无关
2.参数列表不同
1.参数个数不同
2.参数个数相同,参数类型不同:如add(int a,int b);add(double a,double b)
3.参数个数相同,参数顺序不同,如add(int a,double b);add(double a,int b)-->不过一般不这么写,因为
两个方法功能是一样
11.数组
1.数组的定义格式:
数据类型[] 数组名 = new 数据类型[数组长度];
如:
存储基本数据类型:
int[] studnetAges = new int[100];
存储引用数据类型:
String[] studentNames = new String[100];
2.动态初始化
2.1动态初始化格式:
数据类型[] 数组名 = new 数据类型[数组长度];
2.2不同数据类型使用动态初始化会有不同的默认值:
整数类型:byte,short,int,long默认初始化值都是0
浮点类型:float,double默认初始化值都是0.0
布尔类型:boolean默认初始化值false
字符类型:char默认初始化值'\u0000'
3.静态初始化
静态初始化格式:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...}
简化格式:
数据类型[] 数组名 = {元素1,元素2,...};
4.内存分配
a.栈内存:存储局部变量 先进后出
b.堆内存:存储new出来的数组/对象
c.方法区:面向对象部分讲解
d.本地方法区:和系统相关
e.寄存器:给CPU使用
5.二维数组
1.定义格式
数据类型[][] 数组名;
2.初始化方式
数据类型[][] 变量名 = new 数据类型[m][n];
数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}};
简化版格式:数据类型[][] 变量名 = {{元素…},{元素…},{元素…}};
12.断点
1.断点:
就是一个标记,从哪里开始。
2.运行设置断点后的程序:
右键 -- Debug as -- Java Application
3.Debug:断点测试的地方,在这个地方,记住F6,或者点击也可以。一次看一行的执行过程。
Variables:查看程序的变量变化
ForDemo:被查看的源文件
Console:控制台
4. 找到Debug视图,Variables界面,找到Breakpoints,并点击,然后看到所有的断点,最后点击那个双叉。
13.面向对象
1.概念:
1.1是一种更符合我们思想习惯的思想(懒人思想,我把事情自己不做,交给别人去做)
1.2可以将复杂的事情简单化(对使用者来说简单了,对象里面还是很复杂的)
1.3将我们从执行者变成了指挥者角色发生了转换
2.类与对象:
2.1Java中最基本的单位是类,Java中用class描述事物也是如此
成员变量 就是事物的属性
和以前定义变量是一样的,只不过位置发生了改变。在类中,方法外。
成员方法 就是事物的行为
和以前定义方法是一样的,只不过把static去掉,后面在详细讲解static的作用。
2.2使用成员变量
对象名.成员变量
使用成员方法
对象名.方法名()
3.成员变量和局部变量的区别 :能够重名; 就近原则
1.定义的位置不同:
成员变量:在类中方法外
局部变量:在方法中
2.在内存中的位置不同:
成员变量:属于对象,对象在堆内存
局部变量:属于方法,方法在栈内存
3.生命周期不同
成员变量:成员变量随着对象(类)的创建而创建,随着对象类()的消失而消失
局部变量:局部变量随着方法的调用而存在,随着方法的弹栈而消失
4.初始化值不同
成员变量:有默认初始化值
局部变量:没有默认初始化值,在使用之前必须赋值
14.封装与私有关键字
1.private关键字:
是一个权限修饰符。
可以修饰成员(成员变量和成员方法)
被private修饰的成员只在本类中才能访问。
2.this 关键字
代表当前对象的引用
应用场景:区分成员变量和局部变量
3.封装的好处
3.1.提高了安全性
3.2.提高了代码的复用性
15.构造方法
1.格式
方法名与类名相同
没有返回值类型,连void都没有
没有具体的返回值
2.构造方法的重载
回忆:方法重载:方法名相同,参数列表不同,与返回值类型无关
构造方法注意事项:
1.如果我们没有给出构造方法,系统默认会提供一个无参构造方法
2.如果我们已经给出构造方法,系统将不会提供无参构造方法,这个时候如果需要无参构造方法,需
要手动给出,建议永远手动给出
3.给成员变量赋值的两种方式的区别
1).setXxx()方法:修改属性值
2).构造方法:给对象中的属性进行初始化
16.API
1.String
1.1构造方法
String(String original):把字符串数据封装成字符串对象
String(char[] value):把字符数组的数据封装成字符串对象
String(char[] value, int index, int count):把字符数组中的一部分数据封装成字符串对象
1.2判断
boolean equals(Object obj):比较字符串的内容是否相同
boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
boolean startsWith(String str):判断字符串对象是否以指定的str开头
boolean endsWith(String str):判断字符串对象是否以指定的str结尾
1.3转换
char[] toCharArray():把字符串转换为字符数组
String toLowerCase():把字符串转换为小写字符串
String toUpperCase():把字符串转换为大写字符串
2.StringBuilder
2.1 String和StringBuilder的区别:
String的内容是固定的
StringBuilder的内容是可变的
2.2构造方法:
StringBuilder()
2.3成员方法:
public int capacity():返回当前容量 (理论值)
public int length():返回长度(已经存储的字符个数)
public StringBuilder append(任意类型):添加数据,并返回自身对象
public StringBuilder reverse():反转功能
17.集合
只能存储引用数据类型
1.ArrayList集合
1.1添加:
public boolean add(E e):添加元素
public void add(int index,E element):在指定的索引处添加一个元素
1.2删改
public E get(int index):返回指定索引处的元素
public int size():返回集合中的元素的个数
public boolean remove(Object o):删除指定的元素,返回删除是否成功
public E remove(int index):删除指定索引处的元素,返回被删除的元素
public E set(int index,E element):修改指定索引处的元素,返回被修改的元素
18.IO流
1.IO流用来处理设备之间的数据传输
Java对数据的操作是通过流的方式
Java用于操作流的类都在IO包中
流按流向分为两种:输入流,输出流
2.1FileWriter
构造方法
FileWriter(String fileName) 传入一个文件的路径
成员方法
void write(String str) 向文件中写str
void flush() 将内存中的数据刷新到文件中
void close() 关流释放系统底层资源
void write(String str):写一个字符串数据
void write(String str,int index,int len):写一个字符串中的一部分数据
void write(int ch):写一个字符数据,这里写int类型的好处是既可以写char类型的数据,也可以
写char对应的int类型的值。'a',97
void write(char[] chs):写一个字符数组数据
void write(char[] chs,int index,int len):写一个字符数组的一部分数据
2.2FileReader
FileReader(String fileName):传递文件名称
3.缓冲流
BufferedWriter:将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
BufferedReader:从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
缓冲流的特殊功能:
BufferedWriter
void newLine():写一个换行符,这个换行符由系统决定
BufferedReader
String readLine():一次读取一行数据,但是不读取换行符 |
|