Java基础总结

Java概述

众所周知Java是一门编程语言,是一种可以撰写跨平台应用软件的面向对象的程序设计语言。那么使用Java到底能用来编写什么呢?主要用于1.后端服务,2.Web开发领域  例如:淘宝、京东等等。

背景

Java是由Sun Microsystems公司推出的Java面向对象程序设计语言 和Java平台的总称。Java由James Gosling和同事们共同研发,并在1995年正式推出。Java最初被称为Oak,是1991年为消费类电子产品的嵌入式芯片而设计的。1995年更名为Java,并重新设计用于开发Internet应用程序。

DOS命令

Windows操作系统中编译、运行都需要了解常用DOS命令,所以下面我们来学习一下常用DOS命令 弹出DOS控制台的方法是:win+R,然后输出cmd

9a2c7b958f5a4bf398910078a7575b89.png   c694bf5e754a4e4e8f6dc4cd8bfa6391.png

24b137c1cd9e4c77b03abb393d3b42cf.png

7fe4786d0d9643c3bca1be623ccd62e8.png

JDK与JRE

  1. JDK:它是Java开发运行环境,在程序员的电脑上当然要安装JDK;
  2. JRE:Java Runtime Environment它是Java运行环境,如果你不需要开发只需要运行Java程序,那么你可以安装JRE。例如程序员开发出的程序最终卖给了用户,用户不用开发,只需要运行程序,所以用户在电脑上安装JRE即可。
  3. JDK包含了JRE。

跨平台特性

  1. 平台指的是操作系统 (Windows,Linux,Mac)。
  2. Java程序可以在任意操作系统上运行,一次编写到处运行
  3. 实现跨平台需要依赖Java的虚拟机 JVM (Java Virtual Machine)

61bb83c183cc483b974e62869bee2dab.pngJava编写流程

  1. 源文件:编写Java源文件(我们也称之为源代码文件),它的扩展名为.java;
  2. 编译:然后通过编译器把源文件编译成字节码文件,字节码文件扩展名为.class;
  3. 运行:最后使用解释器来运行字节码文件。

411d78a77d694f39bbe9ef03e183bf16.png

源文件编写

HelloWorld.java

public class HelloWorld {
	public static void main(String[] args) {
		System.out.println("HelloWorld");
	}
} 

分别是:主方法,以及输出语句

Public权限(后面细讲)

关键字static
 
静态状态,在不创建对象的前提下也可以访问

主方法是jvm虚拟机直接调用的,测试类中,不需要定义成员变量,也不需要有对象存储数据,可以直接调用主方法,主方法没有必要声明为非静态;jvm是C语言写的,是一个面向过程的语言,不能创建对象。

关键字void

 空,返回值类型为空

  主要使用java语言操作各种数据,如果主方法有返回值,返回给调用者(jvm虚拟机),返回给jvm虚拟机之后,我们没有办法操作这个数据了,没有任何意义。

main方法:

主要的,不是一个关键字

  在jvm虚拟机中,要执行某个类的时候,只执行main方法,在jvm的代码中,已经将要访问的方法,程序的唯一入口,写死了

String[] args形式参数

字符串类型的数组

在执行主方法的时候,可以传入一些参数,将来在主方法中,可以接收到这些参数

Args是一个参数名称,任意修改

String[]的中括号也可以写到args后面

注释、关键字与标识符

Java中提供了三种注释方式,分别是:

  1. 单行注释    //注释内容
  2. 多行注释    /*注释内容*/
  3. 文档注释        /**注释内容*/

4b44b4ed3eb04c3a83d4f172ab054de6.png

关键字

关键字是被Java语言赋予特殊含义,具有专门用途的单词,比如之前接触的class,public,static,void均为Java已经预设好的。

bc5a4c3edde146ff87d30936fd03420d.png

标识符

在Java程序中,除了关键字以外基本上都是标识符了。

其实标识符就是名称的意思,所有的名称都统称为标识符。Java中经常要定义类、方法、变量,在定义他们时总要给它们起名字,这些名字就是标识符。

  1. 组成元素
    1. 英文字符: a-zA-Z
    2. 数字: 0-9
    3. 符号: _与$
  2. 标识符规则
    1. 数字不能开头
    2. 不可以使用关键字
    3. 严格区分大小写,不限制长度起名时,尽量达到见名知意

d9e13441cac749be89d92779432a4408.png程序概述

软件是什么?其实软件就是用来处理数据的程序。可以把软件分为两个部分,一个部分是“数据”;另一个部分是“数据处理的逻辑”

程序 = 数据 + 逻辑

数据

这是数据
		 //定义的变量,存放在键盘输入的值(基本工资)
		float a; 		
		//定义的变量,存放物价补贴
        float b;   
		//定义的变量,存放房租补贴
        float c;
		//定义的变量,存放工资总和
        float d; 
		//定义的变量,存放姓名学号

逻辑

这是逻辑
		 b=a/100*40;//计算物价补贴
        c=a/100*25;//计算房租补贴

 基本数据类型

4e94fd2e74784ec8abef0017e99e93d6.png

基本数据类型是Java语言中内置的类型,分别是整数类型、小数类型、字符类型、布尔类型。这四类基本类型是最简单、最基础的类型

a441a9ca971c400db944660ec138951a.png

常量

Java中的数据量分为常量和变量,我们先来学习常量!

常量就是不变的数据量,例如100就是常量,任何数据量都有其类型,那么100这个常量是什么类型呢?回忆一下基本类型中有四类,分别是整数、小数(浮点数)、字符、布尔。那么100是哪一类型呢?没错,就是整数常量!!!

  1. 整数类型
    1. 十进制表示方式:正常数字   如 13、25等
    2. 二进制表示方式:以0b(0B)开头    如0b1011 、0B1001
    3. 十六进制表示方式:以0x(0X)开头   数字以0-9及A-F组成  如0x23A2、0xa、0x10
    4. 八进制表示方式:以0开头   如01、07、0721
  2. 小数类型
    1. 如1.0、-3.15、3.168等
  3. 布尔类型
    1. true、false
  4. 字符类型
    1. 如'a','A', '0', '家'
    2. 字符必须使用’’ 包裹,并且其中只能且仅能包含一个字符。
  5. 字符串类型
    1. 字符串String类型是一种引用类型,我们先了解作为常量类型的使用方式
    2. 如“我爱Java”,“0123”,“”,“null”
    3. 字符串必须使用“”包裹,其中可以包含0~N

 

 

 

变量

变量是内存中装载数据的小盒子,你只能用它来存数据和取数据。

 

计算机存储单元

变量是内存中的小容器,用来存储数据。那么计算机内存是怎么存储数据的呢?无论是内存还是硬盘,计算机存储设备的最小信息单元叫“位(bit)”,我们又称之为“比特位”,通常用小写的字母b表示。而计算机最小的存储单元叫“字节(byte)”,通常用大写字母B表示,字节是由连续的8个位组成。

当程序需要使用存储空间时,操作系统最小会分派给程序1个字节,而不是1个位。你可能会说,如果程序只需要1个位的空间,系统分派不能只分派1个位吗?答案是不能!这就像你只需要1支烟,你到商店去买烟,商店分派的最小单元是1盒(20支),他不可能卖给你1支烟。

你可能会想,1个字节(8位)可以存储很大的数值了,1位最大是9那么8位最大值为99999999。你错了,因为计算机是采用二进行存储的,而不是我们生活中常用的十进制。所以1个字节存储的最大数据是11111111的二进制数。

除了字节外还有一些常用的存储单位,大家可能比较熟悉,我们一起来看看:

1B(字节) = 8bit

1KB = 1024B

1MB = 1024KB

1GB = 1024MB

1TB = 1024GB

1PB = 1024TB

变量必须要有明确的类型,什么类型的变量装载什么类型的数据。

65210411ab894038be8ced9754e59e75.png

常量与类型

java中默认的整数类型是int类型

浮点类型的常量也可使用后缀,在Java中所有没有后缀以及使用“D”后缀(小写也可以,但建议使用大写)的小数都是double类型;float类型常量必须添加“F”后缀(小写也可以,但建议使用大写)java中默认的浮点类型是double类型

  1. 123没有后缀,所以它是double类型;
  2. 123.28D为double类型;
  3. 123.26F为float类型
变量定义格式:
数据类型  变量名  =  数据值;
int         a    =  100;

数据类型转换

按照数据范围从小到大依次列出

byte -> short -> int -> long -> float -> double

自动类型转换

表示范围小的数据类型转换成范围大的数据类型,这种方式称为自动类型转换

自动类型转换格式:

    范围大的数据类型 变量 = 范围小的数据类型值;

 int i = 100;
 double d2 = i;

强制类型转换

        表示范围大的数据类型转换成范围小的数据类型,这种方式称为强制类型转换

        强制类型转换格式:

        范围小的数据类型  变量 = (范围小的数据类型) 范围大的数据类型值;

int  i = (int)6.718;   //i的值为6

运算符

运算符是用来计算数据的符号。数据可以是常量,也可以是变量。被运算符操作的数我们称为操作数。

算术运算符

  1. 加法运算符在连接字符串时要注意,只有直接与字符串相加才会转成字符串。
  2. 除法“/”当两边为整数时,取整数部分,舍余数。当其中一边为浮点型时,按正常规则相除。
  3. “%”为整除取余符号,小数取余没有意义。结果符号与被取余符号相同。
  4. 整数做被除数,0不能做除数,否则报错。

49772a3f853e415dbe914609ff3edd20.png

算数运算符++、--的使用

     i++ 先赋值在运算,例如 a=i++,先赋值a=i,后运算i=i+1,所以结果是a==1 
     ++i 先运算在赋值,例如 a=++i,先运算i=i+1,后赋值a=i,所以结果是a==2

赋值运算符

297c7ee472324cd48c33d1611ef29fed.png

比较运算符

比较运算符,又叫关系运算符,它是用来判断两个操作数的大小关系及是否相等关系的,结果是布尔值true或者false。

cf29637c0c7544d0b6027c09cb73f0d2.png

逻辑运算符

逻辑运算符,它是用于布尔值进行运算的,运算的最终结果为布尔值true或false。

ee122b11c4ec44d8972e2faeb2431066.png

三元运算符

  1. 格式:

       (条件表达式)?表达式1:表达式2;

如果条件表达式为true,就输出打印表达式1的内容
如果条件表达式为false,就输出打印表达式2的内容

int a =10,b = 20 ;
//(条件表达式)?表达式1:表达式2;
int c= a>b?a:b //a大于b吗?如果大于c=a,否则c=b
//输出大的
System.out.println(c);

运算符优先级

e010634a58cf417cb0714105f1f1da63.png

 

引用数据类型

引用数据类型非常多,大致包括:类、 接口类型、 数组类型、 枚举类型、 注解类型、 字符串型
例如,String类型就是引用类型,Scanner类是引用数据类型的一种
简单来说,所有的非基本数据类型都是引用数据类型

引用数据类型的使用

  1. 数据类型  变量名  =  new 数据类型();

      每种引用数据类型都有其功能,我们可以调用该类型实例的功能。

      变量名.方法名();

例如:完成用户键盘录入

//导包:
import java.util.Scanner;
//创建对象实例:
Scanner sc = new Scanner(System.in);
//调用方法:
int  i = sc.nextInt();// 用来接收控制台录入的数字
String s = sc.next();// 用来接收控制台录入的字符串

fb9ffd3f990b45d0bce2c8556726e497.pngJava生成随机数(random()和Random类)

随机数类Random

我们来学习下,用来产生随机数的类Random,它也属于引用数据类型。

这个Random类,它可以产生多种数据类型的随机数,在这里我们主要介绍生成整数与小数的方式。

 

  1. 方法简介

public int nextInt(int maxValue) 产生[0,maxValue)范围的随机整数,包含0,不包含maxValue;

public double nextDouble()  产生[0,1)范围的随机小数,包含0.0,不包含1.0。

0463048f1ab743fab4bc958f877a99ee.png

  1. Random使用方式:
    1. import导包:所属包java.util.Random 
    2. 创建实例格式:Random 变量名 = new Random();

    public static void main(String[] var0) {
        Random var1 = new Random();
        double var2 = var1.nextDouble();
        double var4 = var1.nextDouble() * 7.0;
        int var6 = var1.nextInt(10);
        int var7 = var1.nextInt(18) - 3;
        long var8 = var1.nextLong();
        boolean var10 = var1.nextBoolean();
        float var11 = var1.nextFloat();
        System.out.println("生成的[0,1.0]区间的小数是:" + var2);
        System.out.println("生成的[0,7.0]区间的小数是:" + var4);
        System.out.println("生成的[0,10]区间的整数是:" + var6);
        System.out.println("生成的[-3,15]区间的整数是:" + var7);
        System.out.println("生成一个随机长整型值:" + var8);
        System.out.println("生成一个随机布尔型值:" + var10);
        System.out.println("生成一个随机浮点型值:" + var11);
        System.out.print("下期七星彩开奖号码预测:");

        for(int var12 = 1; var12 < 8; ++var12) {
            int var13 = var1.nextInt(9);
            System.out.print(var13);
        }

    }

 

流程控制语句

选择结构

if语句

其语义是:如果表达式的值为真,则执行其后的语句,否则不执行该语句

if(布尔表达式)
{
   //如果布尔表达式为true将执行的语句
}

d4409c471dba42b8b3030906dba65ff1.png

public class Test {
 
   public static void main(String args[]){
      int x = 10;
 
      if( x < 20 ){
         System.out.print("我是if语句");
      }
   }
}
//运行结果如下我是if语句

if…else语句

语义是: 如果表达式的值为真,则执行代码块1,否则执行代码块2

if(布尔表达式){
   //如果布尔表达式的值为true
}else{
   //如果布尔表达式的值为false
}

5753f61232d64278af10f6072c19f0af.png

public class Test {
 
   public static void main(String args[]){
      int x = 30;
 
      if( x < 10 ){
         System.out.print(" if 语句");
      }else{
         System.out.print(" else 语句");
      }
   }
}
//运行结果:else 语句

if…else if…else语句

语义是:依次判断表达式的值,当出现某个值为真时,则执行对应代码块,否则执行代码块n。意:当某一条件为真的时候,则不会向下执行该分支结构的其他语句。

if(布尔表达式 1){
   //如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){
   //如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){
   //如果布尔表达式 3的值为true执行代码
}else {
   //如果以上布尔表达式都不为true执行代码
}

fa7e050c2c554bd4bb2085b9ad6a7ec2.png

public class Test {
   public static void main(String args[]){
      int x = 30;
 
      if( x == 10 ){
         System.out.print("X is 10");
      }else if( x == 20 ){
         System.out.print(" X is 20");
      }else if( x == 30 ){
         System.out.print(" X is 30");
      }else{
         System.out.print("这是 else 语句");
      }
   }
}
//运行结果如下:X is 30

选择 switch

switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。

switch(expression){
    case value :
       //语句
       break; //可选
    case value :
       //语句
       break; //可选
    //你可以有任意数量的case语句
    default : //可选
       //语句
}

2e4c70211a5c457e98afc5adff4bc36f.png

public class Test {
   public static void main(String args[]){
 
      char grade = 'a';
 
      switch(grade)
      {
         case 'a' :
            System.out.println("优秀"); 
            break;
         case 'b' :
         case 'c' :
            System.out.println("良好");
            break;
         case 'd' :
            System.out.println("及格");
            break;
         default :
            System.out.println("未知等级");
      }
      System.out.println("你的等级是 " + grade);
   }
}
以上代码编译运行结果如下:

优秀
你的等级是 a

switch语句时还应注意以下几点:

(1)在case后的各常量表达式的值不能相同,否则会出现错误。

(2)在case子句后如果没有break;会一直往后执行**一直到遇到break;**才会跳出switch语句。

(3)switch后面的表达式语句只能是整型或者字符类型。

(4)在case后,允许有多个语句,**可以不用{}**括起来。

(5)各case和default子句的先后顺序可以变动,而不会影响程序执行结果。

(6)default子句可以省略不用(default只用在switch语句中,代表默认处理,代表着默认值,default的作用就是switch语句里所有的case都不成立时所要执行的语句)。

循环 

循环 while

while语句的语义是:计算表达式的值,当值为真(非0)时, 执行循环体代码块。

while( 布尔表达式 ) {
  //循环内容
}

7d45a24c31184b80a11e9c33f9edf878.png

public class Test {
   public static void main(String[] args) {
      int x = 10;
      while( x < 14 ) {
         System.out.print("x : " + x );
         x++;
         System.out.print("\n");
      }
   }
}
以上实例编译运行结果如下:

 x : 10
 x : 11
 x : 12
 x : 13
  1. while语句中的表达式一般是关系表达或逻辑表达式,当表达式的值为假时不执行循环体,反之则循环体一直执行。
  2. 一定要记着在循环体中改变循环变量的值,否则会出现死循环(无休止的执行)。
  3. 循环体如果包括有一个以上的语句,则必须用{}括起来,组成复合语句。

循环语句do…while

它先执行循环中的执行代码块,然后再判断while中表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while循环至少要执行一次循环语句

do {
       //代码语句
}while(布尔表达式);

e05521f5a5fb459ca0f5d9c57f032292.png

public class Test {
   public static void main(String[] args){
      int x = 11;
 
      do{
         System.out.print("x : " + x );
         x++;
         System.out.print("\n");
      }while( x < 10 );
   }
}
以上实例编译运行结果如下:

 x : 11

循环语句for

它的执行过程如下:

  1. 执行表达式1,对循环变量做初始化;
  2. 判断表达式2,若其值为(0),则执行for循环体中执行代码块,然后向下执行;若其值为(0),则结束循环;
  3. 执行表达式3,(i++)等对于循环变量进行操作的语句;
  4. 执行for循环中执行代码块后执行第二步;第一步初始化只会执行一次。
  5. 循环结束,程序继续向下执行
for(初始化; 布尔表达式; 更新) {
    //代码语句
}

b2f471fb585640068270cd1602c139ab.png

public class Test {
   public static void main(String[] args) {
 
      for(int x = 10; x < 13; x = x+1) {
         System.out.print("x : " + x );
         System.out.print("\n");
      }
   }
}
以上实例编译运行结果如下:

x : 10
x : 11
x : 12

循环语句增强for

声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。

for(声明语句 : 表达式)
{
   //代码句子
}
public class Test {
   public static void main(String[] args){
      int [] numbers = {10, 20, 30, 40, 50};
 
      for(int x : numbers ){
         System.out.print( x );
         System.out.print(",");
      }
      System.out.print("\n");
      }
}
以上实例编译运行结果如下:

10,20,30,40,50,

表达式:表达式是要访问的数组名,或者是返回值为数组的方法。

结束语句之break语句

那么循环5次的时候,需要中断不继续训练。在Java语言中,可以使用break语句进行该操作.

使用break语句时注意以下几点:

(1)在没有循环结构的情况下,break不能用在单独的if-else语句中。

(2)在多层循环中,一个break语句只跳出当前循环。

public class Test {
   public static void main(String[] args) {
      int [] numbers = {10, 20, 30, 40, 50};
 
      for(int x : numbers ) {
         // x 等于 30 时跳出循环
         if( x == 30 ) {
            break;
         }
         System.out.print( x );
         System.out.print("\n");
      }
   }
}
以上实例编译运行结果如下:

10
20

结束语句之continue语句

那么循环5次的时候,需要中断后继续训练。在Java语言中,可以使用continue语句进行该操作

(1)continue语句的作用是结束本次循环开始执行下一次循环。

break语句与continue语句的区别是:

(1)break是跳出当前整个循环,continue是结束本次循环开始下一次循环。

public class Test {
   public static void main(String[] args) {
      int [] numbers = {10, 20, 30, 40, 50};
 
      for(int x : numbers ) {
         if( x == 30 ) {
        continue;
         }
         System.out.print( x );
         System.out.print("\n");
      }
   }
}
以上实例编译运行结果如下:

10
20
40
50

循环结构之三种循环比较

while, do-while和for三种循环在具体的使用场合上是有区别的,如下:

1在知道循环次数的情况下更适合使用for循环;

2在不知道循环次数的情况下适合使用while或者do-while循环:

3如果有可能一次都不循环应考虑使用while循环

4如果至少循环一次应考虑使用do-while循环。

循环结构之多重循环

多重循环就是在循环结构的循环体中又出现循环结构。

在实际开发中一般最多用到三层重循环

(1)因为循环层数越多,运行时间越长,程序越复杂,所以一般用2-3层多重循环就可以了。另外不同循环之间也是可以嵌套的。

(2)多重循环在执行的过程中,外层循环为父循环,内层循环为子循环

(3)父循环一次,子循环需要全部执行完,直到跳出循环。**父循环再进入下一次,子循环继续执行…

939341c25e414f429d735bf96474e510.png

数组

一维数组

一维数组是指一组数据的集合,数组中的每个数据被称作元素。在数组中可以存放任意类型的元素,但同一个数组里存放的元素类型必须一致。

在Java中,可以使用以下格式来定义一个一维数组。如下

格式1:

      数据类型[] 数组名 = new 数据类型[数组长度];

                    

  格式2:

       数据类型[] 数组名 = new 数据类型[]{元素值1,元素值2,..};

                           

   格式3:

      数据类型[] 数组名 = {元素值1,元素值2,..};

数据类型[] 数组名 = new 数据类型[元素个数或数组长度];

//数据类型[] 数组名 = new 数据类型[元素个数或数组长度];
int[] x = new int[100];
//text2
int[] x;	          // 声明一个int[]类型的变量,图1.1为内城图
x = new int[100];	// 创建一个长度为100的数组图,1.2为内城图

数组在创建过程中内存的分配情况。

 图1.1,int[] x; 声明了一个变量x,该变量的类型为int[],即一个int类型的数组。变量x会占用一块内存单元,它没有被分配初始值

23c13165be7c4f00b3227cfa94e8e5ac.png

图1.2,x = new int[100]; 创建了一个数组,将数组的地址赋值给变量x。在程序运行期间可以使用变量x来引用数组,这时内存中的状态会发生变化

88f2c498a42b4aaf941d8e493380eff2.png

初始化数组

1fffaa00bc494b5a8bd75a2ea62f2125.png

数组的初始化有两种方式静态动态 如下:

       //动态初始化//
        //创建一个数组,里面可以存放30个int数据
        int[] A = new int[30];

        //创建一个数组,能存放10个double类型的数据
        double[] B = new double[10];

        //创建一个数组,能存放5个字符串
        String[] C = new String[5];

   // ##################################################################

                //静态初始化//
        int[] D = new int[]{1, 2, 3};

        //创建一个数组,用来装字符串:"hello"、 “world”
        String[] E = new String[]{"hello", "world"};

                //数组定义的省略格式//
        int[] F = {1, 2, 3};

数组的遍历

public class ArrayDemo04 {
	public static void main(String[] args) {
		int[] arr = { 1, 2, 3, 4, 5 }; // 定义数组
		// 使用for循环遍历数组的元素
		for (int i = 0; i < arr.length; i++) {
			System.out.println(arr[i]); // 通过索引访问元素
		}
	}
}

二维数组

二维数组如名一样是二维数据的集合,数组中的每个数据被称作元素。在数组中可以存放任意类型的元素,但同一个数组里存放的元素类型必须一致。

在Java中,可以使用以下格式来定义一个二维数组。如下方式

格式1

   数据类型[][] 数组名 = new 数据类型[m][n];

      m: 代表二维数组中一维数组的个数

      n: 代表每个一维数组中元素的个数

格式2:

    数据类型[][] 数组名 = new 数据类型[m][];    

     m: 代表二维数组中一维数组的个数

     每一个一维数组通过赋值来确定数组长度

 格式3:

  数据类型[][] 数组名 = {{元素值1,元素值2,..},{元素值1,元素值2,..},..};

数据类型[] [] 数组名 = new 数据类型[元素个数或数组长度][元素个数或数组长度];

//数据类型[] [] 数组名 = new 数据类型[元素个数或数组长度][元素个数或数组长度];
int[][] arr = new int[4][3];

定义了一个4*3的二维数组,即二维数组的长度为3,二维数组中的每个元素又是一个长度为4的数组

78b58e61fa464d32953d79d3873d0558.png

数据类型[] [] 数组名 = new 数据类型[元素个数或数组长度][];

//数据类型[] [] 数组名 = new 数据类型[元素个数或数组长度][];
int[][] arr = new int[3][];

4467ee9e9a5c4619af994c7ad0171aa1.png

数据类型[] [] 数组名 = {{},{}...};

//数据类型[] [] 数组名 = {{},{}...};
int[][] arr = {{1,2},{3,4,5,6},{7,8,9}};

 2cd2994b600848f6880576f4be71384b.png

具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述

ava类的定义通常以关键字class开始,后面紧跟类的名称。类的名称通常以大写字母开头,遵循驼峰命名法。类的定义通常包含在一对花括号{}中。

  1. 类的定义格式
public class Person {
    // 属性
    private String name;
    private int age;
    
    // 构造方法
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    // 方法
    public void sayHello() {
        System.out.println("Hello, my name is " + name + " and I am " + age + " years old.");
    }
}

属性

构造方法

构造方法的主要作用就是为对象成员变量赋初始值,总是与new运算符一起使用在创建对象的语句中——也就是说,只要你new一个对象出来,就会相应地调用这个类的构造方法。有参数的构造方法可以对对象进行初始化,但建议写了有参的构造方法后再写一个无参的空的构造方法,便于创建一个对象而不给它的成员变量赋初值。要注意,自己写了有参的构造方法,编译器是不会再补充一个缺省构造方法的。

方法

在我们的日常生活中,方法可以理解为要做某件事情,而采取的解决办法。在java中,方法就是用来完成解决某件事情或实现某个功能的办法

在Java中,声明一个方法的具体语法格式如下:

43159ed7576141cfa8e203de1092a390.png

  1. 修饰符:方法的修饰符比较多,有对访问权限进行限定的,
  2. 返回值类型:用于限定方法返回值的数据类型
  3. 参数名:是一个变量,用于接收调用方法时传入的数据
  4. 参数类型:用于限定调用方法时传入参数的数据类型
  5. return关键字:用于结束方法以及返回方法指定类型的值
  6. 返回值:被return语句返回的值,该值会返回给调用者(要与返回类型一致)
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,......){

    执行语句

    ………

    return 返回值;

}


比如: 无返回值有参数方法,如打印指定M行,每行N个*号的矩形

public class text{
	public void tex(int m, int n){
		//打印M行星
		for (int i=0; i<m; i++) {
			//每行中打印N颗星
			for (int j=0; j<n; j++) {
				System.out.print("*");  
			}
			System.out.println();
		}
	}
}

方法的重载

Java中方法的重载,就是在一个类中,有相同的方法名称,但形参不同的方法。

方法重载的规则

  • 方法名称必须相同
  • 参数列表必须不同(参数个数不同、或参数类型不同、参数排列顺序不同等)。
  • 方法的返回类型可以相同也可以不相同。
  • 仅仅返回类型不同,不足以称为方法的重载。
  • 同一个类中,不允许两个方法的方法名称和参数列表都相同

比如:我们假设要在程序中实现一个对数字求和的方法,由于参与求和数字的个数和类型都不确定,因此要针对不同的情况去设计不同的方法。接下来通过一个案例来实现对两个整数相加、对三个整数相加以及对两个小数相加的功能

public class MethodDemo02 {
	public static void main(String[] args) {
		// 下面是针对求和方法的调用
		int sum1 = add01(1, 2);
		int sum2 = add02(1, 2, 3);
		double sum3 = add03(1.2, 2.3);
		// 下面的代码是打印求和的结果
		System.out.println("sum1=" + sum1);
		System.out.println("sum2=" + sum2);
		System.out.println("sum3=" + sum3);
	}

	// 下面的方法实现了两个整数相加
	public static int add01(int x, int y) {
		return x + y;
	}
	// 下面的方法实现了三个整数相加
	public static int add02(int x, int y, int z) {
		return x + y + z;
	}
	// 下面的方法实现了两个小数相加
	public static double add03(double x, double y) {
		return x + y;
	}
}
//运行结果
sum1=3
sum2=6
sum3=3.5

参数传递

参数传递,当我们要调用一个方法时,我们会把指定的数值,传递给方法中的参数,这样方法中的参数就拥有了这个指定的值,可以使用该值,在方法中运算了。这种传递方式,我们称为参数传递。

  1. 定义方法参数列表中的变量,称为形式参数
  2. 调用方法传入给方法的数值,称为实际参数
public class ArgumentsDemo01 {
	public static void main(String[] args) {
		int a=5;
		int b=10;
		change(a, b);//调用方法时,传入的数值称为实际参数
		System.out.println("a=" + a);
		System.out.println("b=" + b);
	}

	public static void change(int a, int b){//方法中指定的多个参数称为形式参数
		a=200;
		b=500;
	}
}

参数传递图解 

dccb1a9ac6cf47bea02742e3020fbc2e.png

 面向对象

请看下个博客

目录:

1面向对象

2类与对象 抽象类

3封装,继承 ,多态

4构造方法,this关键字,super关键字,final关键字,static关键字

5匿名对象

6包的声明与访问

7接口

8异常

9IO

10 反射注解

 11 多线程

本文章为个人学习笔记,文章借鉴其余文章,图片,如有侵权联系删除 

 

 

 

  • 18
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值