java知识梳理

标识符、运算符、流程控制、循环结构、分支结构、数组、方法、类与对象等知识点归纳总结。

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
++自增:操作数值加1A++或++A等于11
--自减:操作数值减1B--或--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 方法名(){

方法体

}

publicprotecteddefaultprivate
本类可以访问可以访问可以访问可以访问
同一个包中的类可以访问可以访问可以访问不能访问
子类可以访问可以访问不能访问不能访问
其他类可以访问不能访问不能访问不能访问

(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个方法
                修饰符返回值类型方法名(参数){
                        执行语句;  
                } 
}

              
(2)创建对象 的语法格式: 类名 对象名 = new 类名 () ;
(3)访问属性 的语法格式为: 对象名 . 属性名
(4)访问方法 的语法格式为: 对象名 . 方法名
接下来以一个具体的案例来演示一下类的定义和对象的创建过程
定义一个学生类
public class Student{
   String name;//姓名属性
   String gender;//性别属性
   int age;//年龄属性  
   //方法
   public void showInfo(){
     System.out.println(name+","+gender+","+age);
   }
}
(2)基本数据类型和引用数据类型
基本数据类型就是值类型,值类型的数据存储在栈内存中,java有8种基本数据类型。
数值型:byte,short,int,long,float,double,
字符型:char
布尔 型:boolean
2.引用数据类型
引用数据类型的数据存储在堆内存中, 除了以上8中基本类型之外,其他java数据类型和自定义的数据类型都是引用数据类型。
(3)两种数据类型在方法中作为参数传递
1、基本数据类型的参数传递
基本数据类型 的参数传递是 值传递 ,实参和形参在栈中的值相同,
对应于不同的栈内存空间,因此在方法中对形参的修改不会影响到
实参。
2、引用数据类型的参数传递
引用数据类型 的参数传递是 地址传递 ,实参和形参在栈中的地址相
同,对应于同一个内存空间,因此在方法中对形参的修改会影响到
实参。

7、类的封装

(1)类的基本封装
属性私有化,然后对外提供属性的访问方法,分别是
赋值方法 取值方法
赋值方法,提供 set 方法。
取值方法,提供 get 方法。
2、 如果 私有化属性 之后,
提供了 set方法 ,说明 属性可写
提供了 get方法 ,说明 属性可读
(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)构造方法名称必须和类名保持一致。

(3)构造方法没有具体的返回值。
(4)当一个类没有显式的写构造方法时,使用的时默认的无参构造方。
案例:
public class Student{
       //Student的成员属性age和name
       private intage;
       private String name;
       //Student的构造方法,拥有参数列表
       public Student (intage,Stringname){
              //接受到创建对象时传递进来的值,将值赋给成员属性
              this.age=age;
              this.name=name;
       }
}
                  
     
构造方法之间的调用,可以通过 this关键字 来完成 。构造方法调用格式:this(参数列表);

案例:

class Student{
      //Person的成员属性
      private int age;
      private String name;

      //无参数的构造方法【无参构造】
      Student(){
      }

      //给姓名初始化的构造方法【一个参数构造】
      Student(Stringnm){
             name=nm;
      }
      
      //给姓名和年龄初始化的构造方法【多个参数构造】
      Student(Stringnm,inta){
      //由于已存在给姓名进行初始化的构造方法;因此只需要调用即可
        //调用其他构造方法,需要通过this关键字来调用
        this(nm);    
        //给年龄初始化
        age=a;
      }
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值