标识符、运算符、流程控制、循环结构、分支结构、数组、方法、类与对象等知识点归纳总结。
1、标识符
Java中的标识符指的是程序中使用的用来标识变量、方法、类等命名的符号。
Java中标识符有以下规则:
- 标识符必须以字母、下划线(_)或美元符号($)开头。
- 标识符不能以数字开头。
- 标识符只能包含字母、数字、下划线或美元符号。
- 标识符大小写敏感。
- 标识符长度无限制。
标识符的命名规范:
建议:标识符号需要做到英文的"见名知意"。
1.大驼峰命名法:首字母大写,后面组合的每个单词首字母大写﹣-﹣类名
2.小驼峰命名法:首字母小写,后面组合的每个单词首字母大写﹣-﹣方法名
3.变量命名规范:全部小写
2、运算符
Java中的运算符分为算数运算符、关系运算符、逻辑运算符、位运算符等。
算数运算符:+、-、*、/、%等。注意:/ 除,两个整数相除的结果还是整数;+符号与字符串一起运算时就是做连接符的,其结果还是一个字符串 ++:自增 --:自减
表格中设变量A的值为10,变量B的值为20
操作符 | 描述 | 例子 |
+ | 加法:相加运算符的两侧值 | A+B等于30 |
- | 减法:左操作数减去右操作数 | A-B等于-10 |
* | 乘法:相乘操作符两侧的值 | A*B等于200 |
/ | 除法:左操作数除以右操作数 | B/A等于2 |
% | 取余:左操作数除以右操作数的余数 | B%A等于0 |
++ | 自增:操作数值加1 | A++或++A等于11 |
-- | 自减:操作数值减1 | B--或--B等于19 |
关系运算符:==、!=、>、<、>=、<=等。
运算符 | 描述 | 示例 |
== | 检查如果两个操作数的值是否相等,如果相等则条件为真。 | (A == B)为假 |
!= | 检查如果两个操作数的值是否相等,如果值不相等则条件为真。 | (A != B) 为真 |
> | 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 | (A> B)为假 |
< | 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 | (A <B)为真 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 | (A> = B)为假 |
<= | 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 | (A> = B)为假 |
逻辑运算符:&&、||、!等。注意:&& : 前一个为false,后一个条件不执行;||:前一个为true,后一个条件不执行
运算符 | 描述 | 示例 |
&& | 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 | (A && B)为假 |
|| | 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 | (A || B)为真 |
! | 称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 | !(A && B)为真 |
位运算符:&、|、~、^、<<、>>等。
三元运算符:关系表达式? 值1 : 值2;
运算符优先级最高的是括号
注意:
1.整数相除结果只能得到整除,如果结果想要是小数,必须要有小数参数。
2.小数直接参与运算,得到的结果有可能是不精确的
3.流程控制
流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:
顺序结构
分支结构
循环结构
1.顺序结构是程序程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。
总的来说:程序按照从上往下的顺序执行。
2.分支结构
(1)单分支语句
语法:
if(条件表达式){
语句块;
}
public class IfTest {
public static void main(String[] args) {
int a = 10;
int b = 10;
if(a > b){
System.out.println("a 大于 b");
}
System.out.println("-------------");
if(a==b){
System.out.println("a 等于 b");
}
}
}
(2)if双分支语句
语法:
if(条件表达式){
语句块A;
}else{
语句块B;
}
条件表达式结果为boolean类型,当表达式结果为true,则执行语句块A;否则执行语句块B。
if-else语句结构,根据需要可以嵌套使用。
public class IfDemo {
public static void main(String[] args) {
int a = 10;
int b = 10;
if(a == b){
System.out.println("a 等于 b");
}else{
System.out.println("a 不等于 b");
}
(3)if多分支语句
语法:
if(条件表达式A){
语句块A;
}else if(条件表达式B){
语句块B;
}...
else if(条件表达式N){
语句块N;
}else{
语句块N+1
}
解释:
所有的条件表达式结果都是boolean类型。
如果条件表达式A结果为true,则执行语句块A,否则去判断条件表达式B;
如果条件表达式B结果为true,则执行语句块B,否则去判断条件表达式C;
....
如果所有的条件表达式结果都为false,则执行语句块N+1
else是可选的,根据需要可以省略。
3、循环结构
(1)for循环
for循环主要用于循环次数已知的情况下。
语法格式:
for(初始表达式1; 条件表达式2; 步进表达式4){
//循环体3
}
初始化语句: 用于表示循环开启时的起始状态,简单说就是循环开始的时候什么样
条件判断语句:用于表示循环反复执行的条件,简单说就是判断循环是否能一直执行下去
循环体语句: 用于表示循环反复执行的内容,简单说就是循环反复执行的事情
条件控制语句:用于表示循环执行中每次变化的内容,简单说就是控制循环是否能执行下去
(2)while循环
while循环主要用于循环次数未知的情况下。
语法格式:
//初始表达式1
while(条件表达式2){
//表达式3
}
(3)do...while循环
do...while循环也是while循环,所以它也用于循环次数未知的情况下,但它与while循环的区别是,它会优先执行一次循环体的内容。
语法格式:
//初始表达式1
do {
//循环体2
}while(条件表达式3);
三种循环语句总结
三种循环的区别
for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行)
do...while循环先执行一次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后判断)
for循环和while的区别
for循环用在循环次数已知的情况下,可以控制遍历次数;
while和do...while循环还可以用在循环次数未知的情况下。
三种循环的区别总结
1、建议使用的顺序:for,while,do-while
2、循环次数确定的话,建议使用for,循环次数不确定建议使用while
3、do-while循环来讲的话,至少执行一次
循环退出
在Java中,有两种跳出循环的方式,分别是break和continue。
break表示跳出当前所在循环: continue跳出本次循环。
4、数组
//数组格式定义
//数据类型[] 数组名
int[] arr;
double[] arr;
char[] arr;
//数据类型 数组名[]
int arr[];
double arr[];
char arr[];
//创建一个int类型数组,长度为5
int[] arr = new int[3];//又称动态初始化 ,系统给出默认值
//静态初始化
1.数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...};
2.数据类型[] 数组名 = {元素1,元素2,...};
int[] arr = {1, 2, 3};
5、方法
方法定义:方法必须先创建才可以使用,该过程称为方法定义
格式:public static void 方法名(){
方法体
}
public | protected | default | private | |
本类 | 可以访问 | 可以访问 | 可以访问 | 可以访问 |
同一个包中的类 | 可以访问 | 可以访问 | 可以访问 | 不能访问 |
子类 | 可以访问 | 可以访问 | 不能访问 | 不能访问 |
其他类 | 可以访问 | 不能访问 | 不能访问 | 不能访问 |
(1)访问控制修饰符
public
(1)定义:public是公共的,被public所修饰的成员可以在任何类中都能被访问到。
(2)作用域:public能用来修饰类,在一个java源文件中只能有一个类被声明为public,而且一旦有一个类为public,那这个java源文件的文件名就必须要和这个被public所修饰的类的类名相同,否则编译不能通过。public用来修饰类中成员(变量和方法),被public所修饰的成员可以在任何类中都能被访问到。通过操作该类的对象能随意访问public成员。public在类的继承上的体现,被public所修饰的成员能被所有的子类继承下来。
protected
(1)定义:protected是受保护的,受到该类所在的包所保护。
(2)作用域:被protected所修饰的成员会被位于同一package中的所有类访问到。同时,被protected所修饰的成员也能被该类的所有子类继承下来。(注意:这里是指同一个package或者不同的package中的子类都能访问)
default
(1)定义:default是默认,缺省的,即在成员的前面不写任何的访问修饰符的时候,默认就是友好的。所谓友好的,是对同一package的类友好。
(2)作用域:同一package中的所有类都能访问。被friendly所修饰的成员只能被该类所在同一个package中的子类所继承下来。(也就是说只有在同一个package中的子类才能访问到父类中friendly修饰的成员)
private
(1)定义:private是私有的,即只能在当前类中被访问到,它的作用域最小。
(2)作用域:private可以修饰数据成员,构造方法,方法成员,不能修饰类(此处指外部类,不考虑内部类)。被private修饰的成员,只能在定义它们的类中使用,在其他类中不能调用。
6.类与对象
在Java中一切皆对象,一切都围绕对象进行,找对象、建对象,用对象等
类:把具有相同属性和行为的一类对象抽象为类。类是抽象概念,如人类、犬类等,无法具体到每个实体。
对象:某个类的一个实体,当有了对象后,这些属性便有了属性值,行为也就有了相应的意义。
类是描述某一对象的统称,对象是这个类的一个实例而已。有类之后就能根据这个类来产生具体的对象。一类对象所具备的共同属性和行为(方法)都在类中定义。
(1)类定义的语法格式:
publicclass类名{
//可编写0至n个属性
数据类型变量名1;
数据类型变量名2;
//可编写0至n个方法
修饰符返回值类型方法名(参数){
执行语句;
}
}
public class Student{
String name;//姓名属性
String gender;//性别属性
int age;//年龄属性
//方法
public void showInfo(){
System.out.println(name+","+gender+","+age);
}
}
(2)基本数据类型和引用数据类型
(3)两种数据类型在方法中作为参数传递
7、类的封装
(1)类的基本封装
将属性私有化,然后对外提供属性的访问方法,分别是
(2)this关键字
public class Student {
private String name; //姓名属性
private String gender; //性别属性
private int age;://年龄属性
public void setName(String name) { //设置name的set万法
this .name = name;
}
public void setGender(String gender) { //设gender的set方法
this .gender = gender
public void setAge(int age) { //设age的set方法
this .age = age;
}
}
this关键字:代表当前对象
(3)构造方法
1、构造方法:构造对象时用的方法,即就是对象创建时要执行的方法。
2、构建方法的格式:
修饰符构造方法名(参数列表){
//代码块
}
3、构造方法的特点
(1)构造方法没有返回值类型。也不需要写返回值。因为它是为构建对象的,对象创建完,方法就执行结束。
(2)构造方法名称必须和类名保持一致。
public class Student{
//Student的成员属性age和name
private intage;
private String name;
//Student的构造方法,拥有参数列表
public Student (intage,Stringname){
//接受到创建对象时传递进来的值,将值赋给成员属性
this.age=age;
this.name=name;
}
}
案例:
class Student{
//Person的成员属性
private int age;
private String name;
//无参数的构造方法【无参构造】
Student(){
}
//给姓名初始化的构造方法【一个参数构造】
Student(Stringnm){
name=nm;
}
//给姓名和年龄初始化的构造方法【多个参数构造】
Student(Stringnm,inta){
//由于已存在给姓名进行初始化的构造方法;因此只需要调用即可
//调用其他构造方法,需要通过this关键字来调用
this(nm);
//给年龄初始化
age=a;
}
}