Java入门级基础教学(史上最详细的整合)

Posted 代码贩子、

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java入门级基础教学(史上最详细的整合)相关的知识,希望对你有一定的参考价值。

目录

一:基础语法

1.“Hello word”

2.Java的运行机制

3. Java基本语法

1.注释、标识符、关键字

2.数据类型(四类八种)

4.类型转换

1.自动转换

 2.强制转换

5.常量和变量

1.常量

2.变量

3.变量的作用域

6.运算符

1.算数运算符

2.赋值运算符

3.关系运算符

4.逻辑运算符

5.自增、自减运算符

二:Scanner与流程控制:

1.Scanner用法

2.流程控制

1.顺序结构

3.if选择结构

1.单if语句

2.标准语句

3.扩展语句

4.switch选择结构

1.break关键字

2.default关键字

3.continue关键字

5.循环结构

1.while循环

2.do while循环

3.for循环(重点)

4. 增强for

三:方法的定义和调用

四:数组

1.维数组

1.数组的定义

2.动态和静态数组

3.数组的打印输出

4. Java内存

4.数组的使用

2.二维数组

3.冒泡排序法(江湖中人尽皆知)

五:什么是面向对象

六:类与对象的关系

1.什么是类

2.什么是对象

3.创建与初始化对象

1.什么是类

2.什么是构造器

3.创建对象内存分析

 七:封装、继承、多态

1.封装

2.继承

3.this和super关键字

4.方法重写

 静态方法:

 非静态方法:

5.多态

6.instanceof关键字

7.static关键字

 8.抽象类

9.接口

10.内部类

1.成员内部类

2.静态内部类

3.匿名内部类

4.局部内部类

11.异常

1.抛出以及捕获异常

2.自定义异常


一:基础语法

1.“Hello word”

1.首先下新建一个文件夹存放代码,

2.新建一个Java文件来存放Java的相关代码。

注意点:文件的后缀名为Java(本文为Hellow.java)

public class Hello 

//class后面的名字应该和文件名保持一致,否则会报错

  public static void main(String[] args)

     System.out.print("Hello Word");
//System.out.print("XXX")打印输出语句

  

在cmd的根目录i下进行执行的时候采用javac Hellow.java 来执行文件会生成一个class文件,接着执行java Hellow来执行编译文件就会自动的打印输出Hello word!。

2.Java的运行机制

1.编译型:直接编译成系统可以理解的语言。这样的执行速度会更快。

2.解释型:把机器不懂的地方进行解释从而来进行执行。

Java编译器将准备好的源文件编译成了class文件,真正被执行的应该是class文件。此时将class文件放入到类加载器,放在Jvm中进行。字节码校验器来进行代码的校验,校验完成若没有了错误,此时的解释器便开始工作将我们的程序解释给操作系统从而进行解读。

3. Java基本语法

1.注释、标识符、关键字

注释(以代码为例):

public class HelloWord 
    public static void main (String[] args)
        //单行注释:只能注释一行内容
        //输出一个HelloWord
        System.out.println("Hello Word!");
        /*为多行注释:可以注释多行内容*/
        /*System.out.println("Hello Word1!");
        System.out.println("Hello Word2!");
         */
        //JavDdoc文档注释
        /**文档注释:可以加功能
         * @Author 代码贩子、 --南京邮电大学
         */
    
(标识符):Java中所有的组成部分都需要名字。类名,变量名,以及方法名都称之为标识符。

注意点:所有的标识符都应该以(A——z)、$、或者是下划线开始的。

              首字符之后可以是(A——z)、$、或者是下划线的组合。

              关键字不可以作为名字。

可以是中文名字但是一般不采用,因为太Low,会被同行看不起。

标识符是大小写敏感的。

2.数据类型(四类八种)

Java为一款强类型的语言,所有变量的使用必须严格的符合固定,所有的变量只有被定义后才能进行使用。

4.类型转换

重点提示:(有人问为什么long占的字节比float的多还排在float后面?因为在发生转换的时候小数的优先级要大于整数。)不同类型的数据结构先转化为同一类型的,然后再进行计算。

强制转换分为两种,一种是从低到高的转换方法,一种是从高到低的转换方法。

1.自动转换

显式(规则:数据范围从低到高):代码不需要进行处理并且直接可以完成转换。

 /**
     * @Author代码贩子、 --南京邮电大学
     */
public class HelloWord 
    public static void main (String[] args)
        //直接输出一个整数,默认是int型
        System.out.println("30");
        //直接输出一个小数,默认是double型
        System.out.println("3.12");
        //(1)左边是long类型,右边是int类型
        //(2)=进行赋值,右边默认给左边 int——>long满足从低到高的转换规则
        //(3)这一行代码发生了自动转换
       long name1=100;
       System.out.println(name1);
       //(1)右边是float类型,左边是double类型
       //(2)float->double,满足从低到高的转换规则
      //(3)所以发生了自动转换
       double name2=3.1415926F;
       System.out.println(name2);
       //(1)右边是long类型,左边是float类型
       //(2)long->float,满足从低到高的转换规则
       //(3)所以发生了自动转换
       float name3=30L;
       System.out.println(name3);
    

 2.强制转换

代码需要进行处理不能够自动的完成转换。

格式:(范围小的类型)+范围小的变量名=(范围小的类型)+原本范围大的数据

注意:(1)在进行前置转换的时候可能会出现内存溢出、精度丢失等现象。

           (2)byte/short/char这三种类型可以进行数学计算。

           (3)byte/short/cha这三种类型在进行运算的时候首先会被默认为是int卡类型。

           (4)布尔类型不可以进行任何的数据转换。
 

 /**
     * @Author代码贩子、 --南京邮电大学
     */
public class HelloWord 
    public static void main (String[] args)
        //(1)右边是long类型,左边是int类型
        //(2)long->int 不是从高到低,所以需要进行强制转换
        //(3)格式:(较小的数据类型)+较小的变量名=(较小的数据类型)+(原本范围较大的数据)
        int nume1 = (int) 100L;
        System.out.println(nume1);
        //(1)右边是int类型,左边是int类型
        //(2)int->byte
        //(3)格式:(较小的数据类型)+较小的变量名=(较小的数据类型)+(原本范围较大的数据)
        //写法一:
        int a = 200;
        byte b = (byte) a;
        //写法二:
        byte nume2 = (byte) 200;
        //输出值为-56
        //原因为200超过了byte的数据范围,发生了内存溢出的现象,所以在发生强制转换之后的输出值为负数。
        System.out.println(b);
        System.out.println(nume2);
        float c = 3.14f;
        int d = (int) c;
        //此时的输出值为3
        //因为在强制转换的时候float->int会发生精度丢失的问题,所以最后的输出值为3而不是3.14。
        System.out.println(d);
        //输出的值为97
        char e ='a';
        int f= (int)e;
        System.out.println(f);
        //输出的值为b
         int g= f+1;
        System.out.println((char) g);
        //应该是20000000000,但是实际的结果输出的为一个负数
        //那是因为计算的时候溢出了
        int moeny = 10_0000_0000;
        int years = 20;
        int total = moeny*years;
        System.out.println(total);
        //虽然发生了自动转换还是输出的为负数
        //因为默认是int并且在转换之前就已经出现了问题。
        long total2 = total;
        System.out.println(total2);
        //此时输出的结果为正确的数值
        //输出的结果为20000000000
        //解决方法:先把一个数据转化为long类型
        long total3 = moeny*(long)years;
        System.out.println(total3);
    

5.常量和变量

1.常量

定义:在程序运行期间固定不变的量

格式:final 常量名 = 值;

          final double PI = 3.1415926;

 常量的分类:

 (1)字符串常量:凡是用双引号引起来的量:如“ABC” "Hellow" "123"

  (2)整数常量:无小数点的数字:如1 -100  0

  (3)浮点型:直接写上的数字,有小数点:如2.5 -3.14 0.0

  (4)字符常量:凡是用单引号引起来的单个字符:如‘A’ ‘b’ '1' '中'

  (5)布尔常量:只有量中取值:如 true false

  (6)空常量:null 代表没有任何的数组

 /**
     * @Author代码贩子、 --南京邮电大学
     */
public class HelloWord 
    public static void main (String[] args)
        //字符型常量
        System.out.println("kj10");
        System.out.println("");//两个双引号之间的内容为空,也有打印输出
        System.out.println("ABC");
        //整数常量(整数)
        System.out.println(-400);
        System.out.println(0);
        //浮点型(小数)
        System.out.println(3.14);
        System.out.println(-0.25);
        //字符常量
        System.out.println('帅');
      //  System.out.println('AB');
       // System.out.println('');//字符常量有且仅有一个字符,不能有两个,也不能为空
        //布尔常量
        System.out.println(true);
        System.out.println(false);
        //空常量
       // System.out.println(null);//空常量不能直接打印输出
        System.out.println();//或者什么都不写可以进行打印输出
    

2.变量

定义:可以随时发生变化的量,也是Java程序中最基本的储存单元,其要素包括变量名,变量类型和作用域。

注意点:(1)每个变量都有类型,类可以是基本类型也可以是引用类型。

              (2)变量名必须是合法的标识符。

              (3)变量声明的是一个完整的语句,所以每一个声明必须都要以分号结束。

              (4)修饰符不存在前后的顺序,可以是 final static double PI = 3.1415926;也可以是 static final double PI = 3.1415926;

格式;数据类型 + 变量名 = 值;(可以用逗号隔开来来声明多个同类型的变量)。

 /**
     * @Author代码贩子、 --南京邮电大学
     */
public class HelloWord 
    public static void main (String[] args)
        //写法一:
        //为了方便程序的可读性,所以不建议这么写
        int a=1,b=2,c=3;
        //写法二(推荐写法):
        int d = 1;
        int e = 2;
        int f = 1;
    

3.变量的作用域

(1)类变量:写在类里面的变量,加上satatic的关键字。

(2)实例变量:写在方法的外面,类的里面(从属于对象,或者理解为从属于这个类,要通过这个类来使用它,如果不规定初始值则利用的是初始值)并且不需要进行初始化。

(3)局部变量:写在方法里面的变量(包括写在主程序里面的方法),必须声明和初始化值。

 /**
     * @Author代码贩子、 --南京邮电大学
     */
public class HelloWord 
    //类变量:加上关键字static
    //类变量是从水属于这个类的,会随着这个类一起出来和消失。
    static double saLary = 2500;
    //实例变量:写在方法的外面,类得 里面。从属于对象或者是从属于这个类,要通过这个类才能使用它,可以不设置初始值
    String name;
    int age;
    //主程序的方法或者是叫mian方法
    public static void main (String[] args)
        //局部变量是写在方法里面的,只对这个方法负责,跳出方法之外就不能被使用
        //所有的局部变量必须声明和设置初始值
        int i = 10;
        System.out.println(i);
        //使用面向对象的范畴
        //左边的HelloWord为自定义类型,helloWord为引用类型
        //变量类型+变量名字=值为new 变量HelloWord();将相当于拿到了自己,也就是把自己给自己才能拿到自己的实例变量
        //如果实例化对象不给初始值,则会默认输出默认初始化的数值。
       HelloWord helloWord= new HelloWord();
       System.out.println(helloWord.name);
       System.out.println(helloWord.age);
       //类变量:加上关键字static
        //如果去点static则不会被调用
        System.out.println(saLary);
    
    //新写的一个增加的方法
    public void add()
        //这里不能说输出变量i是因为局部变量不在add的方法里面。
        System.out.println(i);
      HelloWord helloWord= new HelloWord();
      //这里的add方法可以调用实例变量,是因为add方法在实例变量的作用域内
      System.out.println(helloWord.name);
      System.out.println(helloWord.age);
      //这里的add方法也作用在类变量的作用域内,所以可以调用类变量
      System.out.println(saLary);
    

6.运算符

1.算数运算符

算数运算符:+、-、*、/、%(取余)

 /**
     * @Author代码贩子、 --南京邮电大学
     */
public class HelloWord 
    public static void main (String[] args)
        long a = 3000000000000000000L;
        int b = 20;
        double c = 3.14;
        int d = 10;
        //因为有double类型的,所以输出为double类型
        System.out.println(a+b+c+d);
        //输出的为3000000000000000020,明显超出了int类型,因为有long类型,这里发生了自动转换,默认为龙类型
        System.out.println(a+b);
    

2.赋值运算符

赋值运算符:=

赋值运算符:=、+=、-+、*+、/=、%=

(1)+=    a +=3    相当于     a=a+3
(2)-=    a -=3    相当于     a=a-3
(3)*=    a *=3    相当于     a=a*3
(4)/=    a /=3    相当于     a=a/3
(5)%=    a %=3    相当于     a=a%3

注意事项:只有变量才能使用赋值运算符

 /**
     * @Author代码贩子、 --南京邮电大学
     */
public class fx
    public static void main(String[] args)
        int a=10;
        a+=5;
        System.out.println(a);//15
    

3.关系运算符

关系运算符:>、<、>=、<=、==(相等)、!=(不等)

注意:(1)比较运算符的结果必须是个布尔型,成了为ture,不成立为false
           (2)如果进行多次判断不可以连着写 例如1<x<3

 /**
     * @Author代码贩子、 --南京邮电大学
     */
    public static void main(String[] args)
        int a=10;
        int b=20;
        int c=20;
        System.out.println(a>b);//false
        System.out.println(a<b);//true
        System.out.println(a>=b);//flase
        System.out.println(a<=b);//true
        System.out.println(a==b);//false
        System.out.println(a!=b);//ture
        System.out.println(b==c);//true
    

4.逻辑运算符

逻辑运算符:&&(与)、||(或)、!(非)

注意:(1)“&&和||”同时使用的时候会出现短路的情况,如果左边已经得到了结果,那么右面的将不再执行。

           (2)“&&和||”左右各需要一个布尔型。但是取反只需要一个布尔型即可。

           (3)“&&和||”如果有多个条件可以进行连写。

              两个条件:条件A&&条件B

             三个条件:条件A&&条件B&&条件C

对于1<x<3的情况,写的时候应该拆成两个部分, 然后用&&运算符连接起来。比如(1<x,&&x<3)

 /**
     * @Author代码贩子、 --南京邮电大学
     */
    public static void main(String[] args)
        System.out.println(true&&false);//false
        System.out.println(true&&true);//true
        System.out.println(3<5&&5<6);//true
        System.out.println(true||true);//true
        System.out.println(true&&false);//true
        System.out.println(false&&false);//false
        System.out.println(true);//true
        System.out.println(!true);//false
        //短路
        int a=10;
        System.out.println(3>4&&++a<20);//true   左边已经可以判断得到最终结果,右边将不在执行
        System.out.println(a);//10
        int b=20;
        System.out.println(3<4||++b<30);//true   左边已经可以判断得到最终结果,右边将不在执行
        System.out.println(b);//20
    

5.自增、自减运算符

++、--

基本含义:让变量上升或者是下降一个为1的值。

注意:在单独使用的时候++a和a--没有什么区别。

          在混合使用的时候:前++为先加后用。变量+1然后拿着加上的值继续使用。

                                          后++为变量直接使用,然后在加上1。

 /**
     * @Author代码贩子、 --南京邮电大学
     */   
     public static void main (String[] args)
        int a = 10;
        int b = ++a;
        //如果不写++a,那么输出的a的值为10;加上的话输出的值为11,因为++a为先加后用。
        System.out.println(a);//11
        System.out.println(b);//11
        int c = a++;
        //先用后加
        System.out.println(c);
    

二:Scanner与流程控制:

1.Scanner用法

          第一步:导入sacnner类   import Java.until.*;(写在公共类的来头)

         第二步:创建Scanner对象 Sacnner scanner=new Scanner(system.in);//构造Scanner类的对象sc,接收从控制台输入的信息

         第三步:打印输出提示符号 System.out.println("提示文字);

         第四步:获取键盘输入的数据  String src=input.nextlnt()/nextLine();

         第五步:打印输出值:System.out.println("打印输出的值为:");

         第六步:hasNext()/hasnextLine()来判断是否还有下一个输入。

 /**
     * @Author代码贩子、 --南京邮电大学
     */
    public static void main (String[] args)
        //new Scanner()为创建一个Scanner对象,或者说是创建一个Scanner扫描器;
        //System.in用来接收键入的数据
        Scanner scanner = new Scanner(System.in);
        //提示输入的数据
        System.out.println("请输入数据:");
        //等待你所有的输出,将字符串的额变量全部保存在变量中最后在通过下一句进行输出。
        String src = scanner.next();
        //用来提示输出数据
        //这里在输出带有空格的字符串会出现空格之后的不输出,因为next()不能得到带有空格的字符串。
        System.out.println("您输出的数据为:"+src);
        //如果使用的是nextLine()来进行接收,就可以获得空格之后的所有字符。因为nextLine()是以Enter为结束符,nextLine()方法返回的是输入回车之前的所有字符。
        String src2 = scanner.nextLine();
        System.out.println("您输出的数据为:"+src2);
        //I/O流来进行关闭,减少所占用的资源。
        scanner.close();
    
 /**
     * @Author代码贩子、 --南京邮电大学
     */
    public static void main (String[] args)
        //new Scanner()为创建一个Scanner对象,或者说是创建一个Scanner扫描器;
        //System.in用来接收键入的数据
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入数据:");
        //if语句来进行是否还有数据的输入
        //scanner.hasNext(),看一下这个对象还有没有下一个。
        if(scanner.hasNext())
            //通过scanner来接收用户的数据。
            String src = scanner.nextLine();
            //输入的内容为src的字符串
            System.out.println("您输出的信息为"+src);
        
        //I/O流关闭资源
        scanner.close();
    


 

 /**
     * @Author代码贩子、 --南京邮电大学
     */
    public static void main (String[] args)
        int a = 10;
        float b = 3.14f;
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个整数:");
        if(scanner.hasNextInt())
            a = scanner.nextInt();
            System.out.println("您输入的整数值为:"+a);
        else
            System.out.println("您输入的不是整数!");
        
        System.out.println("请输入一个小数:");
        if(scanner.hasNextFloat())
            b = scanner.nextFloat();
            System.out.println("您输入的小数值为:"+b);
        else
            System.out.println("您输入的不是小数!");
        
        scanner.close();
    

练习:键入多个数字,求输入数字的平均值以及总和。在输入数值的时候需要通过回车键来进行确认,并且通过非数值来结束,结束时输出对应的总和以及平均数的计算结果。

 /**
     * @Author代码贩子、 --南京邮电大学
     */
    public static void main (String[] args)
        //首先定义两个数值,sum以及输入的次数。
        double sum = 0;//定义初始值为0的总和sun
        int m = 0;//定义输入的次数m
        //创建扫描器
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个数:");
        //判断是否还有数据的输入
        while (scanner.hasNextDouble())
            //输入一个随机数值
           double x = scanner.nextDouble();
            //输入了m+1次
            m++;//m=m+1
            //每次输入的数值相加,最后赋值给sum
            sum = sum+x;
            System.out.println("你输入了"+m+"次数值,当前的和为"+sum);
        
        System.out.println("前"+m+"次的总和为"+sum);
        System.out.println("输入"+m+"次之后的平均值为"+sum/m);
        scanner.close();
    

2.流程控制

1.顺序结构

定义:Java的基本结构就是顺序结构,除非特殊指明,否则就按照顺序一步一步的执行。

 /**
     * @Author代码贩子、 --南京邮电大学
     */
    public static void main(String[] args)
        System.out.println("今天天气不错");
        System.out.println("拿了十块钱");
        System.out.println("去网吧打撸啊撸");
    

3.if选择结构

1.单if语句

 if(关系表达式<或者是布尔表达式>)  
    语句体(true就成立执行语句体,false就绕过了语句体,直接输出结束。);

 /**
     * @Author代码贩子、 --南京邮电大学
     */
    public static void main (String[] args)
        Scanner scanner = new Scanner(System.in);
        String str = scanner.nextLine();
        //str.equals("hello"判断是否为真
        if (str.equals("hello"))
            System.out.println(str);
        
        System.out.println("End");
        scanner.close();
    

2.标准语句

if(关系表达式)

语句体1;

else

语句体2;

注意:如果关系表达式为ture则执行语句体1,如果表达式为false则执行语句体2。

           在执行的时候不能两个都执行,也不能两个都不执行。

 /**
     * @Author代码贩子、 --南京邮电大学
     */
    public static void main (String[] args)
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入您要验证的成绩:");
        double score = scanner.nextDouble();
        if (score>=60)
            System.out.println("您的成绩合格!");
        else
            System.out.println("您的成绩不合格!");
        
        scanner.close();
    

3.扩展语句

if(判断条件1)

语句体1;

else if(判断条件2)

语句体2;

...........

else if(判断条件n)

语句体n;

else

语句体n+1;

注意:如果满足条件一,则下下面的将不再执行,如果为false则执行语句体2、3、n。有一个满足的下面的将不再执行。

          如果以上的都不满足,将会无条件的执行else里的n+1的条件语句。

小练习:输入指定的考试成绩,判断考试的等级:1.90-100 优秀;2.80-89  良;3.70-79  中;4.60-69  合格;5.0-59   差。

 /**
     * @Author代码贩子、 --南京邮电大学
     */
    public static void main (String[] args)
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入您要验证的成绩:");
        double score = scanner.nextDouble();
        if (score>=90&&score<=100)
            System.out.println("您的成绩为优秀,请保持状态!");
         else if (score>=80&&score<=89)
            System.out.println("您的成绩为良,还有提升的空间!");
         else if (score>=70&&score<=79)
            System.out.println("您的成绩为中等,你还可以更进一步!");
          else if (score>=60&&score<=69)
            System.out.println("您的成绩为合格,请继续努力!");
        else if (score>=0&&score<59)
            System.out.println("您的成绩不合格,请加倍努力!");
        else
            System.out.println("您的输入有误,请重新输入!");
        
        scanner.close();
    

4.switch选择结构

1.break关键字

break关键字可以用在switch中,一旦执行,整个switch将立刻结束。
break关键字也可以用在其他语句中,整个循环语句立刻结束,打断循环。

2.default关键字

default的作用是在case匹配失败之后才会被执行,打印出来相对应的输出信息。

3.continue关键字

contine关键字立即跳过本次的循环,进入到下一个循环语句当中。

    /**
     * @Author代码贩子、 --南京邮电大学
     */
    public static void main (String[] args)
        char grade = 'c';
        //switch匹配一个值比较方便
        switch (grade)
            case 'a':
            System.out.println("优");
            break;
            case 'b':
                System.out.println("良");
                break;
            //break在整个语句中,一旦被执行将会结束整个循环。
            //如果不加break将会出现贯穿的现象。
            //c和d如果不加break将会打印输出“中”后面的所有的输出字符。
            case 'c':
                System.out.println("中");
                break;
            case 'd':
                System.out.println("差");
                break;
            //default的作用是在case匹配失败之后才会被执行,打印出来相对应的输出信息。
            default:
                System.out.println("您的输入有误!");
        
    

5.循环结构

循环结构表

顺序上

应用上

格式

For循环

先判断。在执行。

循环次数确定,通常用for循环。

for(初始化表达式;条件判断;步进语句)

      循环体

While循环

先判断。在执行。

循环次数不确定,通常用whiler循环。

初始表达式;

While(条件判断)

循环体

步进语句

Do  whlle循环

先执行,在判断

循环次数不确定,通常用whiler循环。

初始表达式;

Do

循环体

步进语句

while(条件判断);

1.while循环

在进行执行的时候首先对条件语句进行判断才进行执行,在循环次数不确定的时候通常使用while循环语句。

初始表达式;

while(条件判断)

循环语句;

步进语句;

小练习:使用whlle循环语句来计算1+2+3+……+100的和。

    /**
     * @Author代码贩子、 --南京邮电大学
     */
    public static void main (String[] args)
        int i = 0;
        int sum = 0;
        while (i<=100)
            sum = sum + i;
            i++;
            System.out.println("此时运行了:" + i+"次," + "此时的和为"+sum);
        
        System.out.println("和为:" +sum);
    

2.do while循环

在执行的时候首先执行才能进行判断,即使不能满足条件也至少执行一次。循环次数不确定,通常用whiler循环。

初始语句;

do

循环体;

步进语句;

while(条件判断表达式);

    /**
     * @Author代码贩子、 --南京邮电大学
     */
    public static void main (String[] args)
        int i = 0;
        int sum = 0;
       do 
               sum = sum + i;
               i++;
               System.out.println("此时运行了:" + i+"次," + "此时的和为"+sum);
            while (i<=100);
        System.out.println("和为:" +sum);
    

3.for循环(重点)

在执行的时候先进性判断然后在执行,在执行的时候循环次数确定。

for(初始值;条件表达式;步进语句)

循环体1;

else

循环体2;

小练习1:求100以内(包括100)的奇数偶数的和以及总体的和。

    /**
     * @Author代码贩子、 --南京邮电大学
     */
    public static void main (String[] args)
        int sum1 = 0;
        int sum2 = 0;
        for (int i = 0; i <=100 ; i++) 
            if (i%2!=0)
                sum1+=i;
            else
                sum2+=i;
            
            System.out.println("此时的和为:"+sum1);
            System.out.println("此时的和为:"+sum2);
        
        System.out.println("此时的和为:"+sum1+sum2);
    

小练习2:用for循环输出1-1000以内(包含1000)内所有可以被5整除的数,并且每一行只打印三个。

    /**
     * @Author代码贩子、 --南京邮电大学
     */
    public static void main (String[] args)
        for (int i = 0; i <=1000 ; i++) 
            //这里说明是可以被5整除的数,我们把它输出出来
            if (i%5==0)
                System.out.print("您得到的数为:"+i+"\\t");
            
            //如果i模5*3。那么就是先换行
            if (i%(5*3)==0)
                System.out.print("您得到的数为:"+"\\n");
            
        
    

3.小练习:打印等腰三角形

    /**
     * @Author代码贩子、 --南京邮电大学
     */
    public static void main (String[] args)
        for (int i = 1; i <= 5; i++) 
            for(int j = 5;j >= i;j--)
                System.out.print(" ");
            
            for (int j = 1;j <= i;j++)
                System.out.print("*");
            
            for (int j = 1;j < i;j++) 
                System.out.print("*");
            
            System.out.println();
        
    

4.小练习:利用for循环打印九九乘法表。

    /**
     * @Author代码贩子、 --南京邮电大学
     */
    public static void main (String[] args)
        //3.加入for循环之后将常量1都替换成变量j。下面需要去掉重读的项目。找一下是哪里写死的原因
        //4.此时发现缺2*9 3*9 4*9......
        //5.此时只要减少重复项即可,我们发现j是不变的,只有i<j的时候才能满足
        for (int j =1;j<=9;j++)
            //1.先打印第一列
            for (int i = 1; i <=j; i++) 
                //2.输出成1*i的形式,此时应该考虑怎么解决2* 3*的问题,如果解决的话需要将常量1改成变量的形式,在佳茹一个for循环
                System.out.print(j+"*"+i+"="+(j*i)+"\\t");
            
            //每输出一行进行换行
            System.out.println( );
        
    

4. 增强for

主要用来遍历数组和集合的。

for(声明语句:表达式)

代码句子;

    /**
     * @Author代码贩子、 --南京邮电大学
     */
    public static void main (String[] args)
        int[] i =10,20,30,40,50;
        //上下相等,这里是数组部分,目前可以不做讨论。
        for(int x =0;x<5;x++)
            System.out.println(i[x]);
        
        //数组每一项遍历出来赋值给int x,x指的就是每一个数值
        for (int x:i)
            System.out.println(x);
        
    

三:方法的定义和调用

1.方法的定义:方法包括一个方法的开头和一个方法体。

修饰符 返回值类型 方法名(参数类型 参数名)

方法体;

return 返回值;

解释:

修饰符可以有 public static final等

返回值类型如果为void则返回为空,也就是不需要rutern,如果是int等类型需要进行返回,

方法名可以根据命名的规则来自己进行定义,比如增加的add方法和删除的del方法。

参数类型包括两种,一个形式参数和一个实际参数。参数像是一个占位符,可以被选择,也可以不做选择(也就是方法可以 不含参数)。

***形式参数指的是在方法被调用时来接收外界输入的数据。

***实际参数指的是调用方法实际传给对方的参数。

方法体:包括定义的具体语句以及定义该方法的功能。

    /**
     * @Author代码贩子、 --南京邮电大学
     */
    public static void main (String[] args)
        //直接调用方法,给个实际参数1和2。
        /*
        上面的参数1和2传输给下面的a和b,经过reyurn传给sum进行输出。
        也就是通过这个语句来调用这个方法。
         */
        int sum = add(1,2);
        System.out.println(sum);
    
    //写一个add的方法,给个形式参数a和b,想要被main方法调用,需要用修饰符static改成类方法
    //这里的加法需要定义函数,使用形参的形式
    public static int add (int a,int b) 
        //返回一个值,如果是void则不需要进行返回,如果是int等则需要进行返回并且一一的对应。
        return a + b;
    

2.方法的调用:

    /**
     * @Author代码贩子、 --南京邮电大学
     */
    public static void main (String[] args) 
        //这里的maxmin作为有参的结果赋给max这个值在进行打印输出。
        int max =maxmin(30,30);
        //这里的方法没有返回值,只用来传递参数来进行输出。
        System.out.println(max);
    
    public static int maxmin(int a,int b)
        int result=0;
        if(a==b)
            System.out.println("a=b");
            return 0;//终止方法
        
        if (a>b)
             result=a;
        else
            result=b;
        
        return result;
    

例如:int max =maxmin(30,30);

如果方法为void,方法的调用一定是一条语句。

例如:System.out.println("Hello word");

小练习:调用方法打印正三角形。

    /**
     * @Author代码贩子、 --南京邮电大学
     */
    public static void main (String[] args)
        test();
    
    public static void test()
        for (int i = 1; i <= 5; i++) 
            for(int j = 5;j >= i;j--)
                System.out.print(" ");
            
            for (int j = 1;j <= i;j++)
                System.out.print("*");
            
            for (int j = 1;j < i;j++) 
                System.out.print("*");
            
            System.out.println();
        
    

2.方法重载

简单的说就是方法名称相同,方法里面包含的参数类型不同。

方法重载的规则:

1.方法名必须相同。

2.参数名称必须不同。(个数不同,类型不同,排列顺序不同等。)

3.方法的返回值可以相同也可以不同。

4.仅仅是返回值类型不同则不可以完成方法的重载。

实现理论:方法名称相同的时候,编译器会根据方法参数类型的个数,参数类型去逐个匹配,以选择对应的方法,如果匹配失败,编译器会报错。

    /**
     * @Author代码贩子、 --南京邮电大学
     */
    public static void main (String[] args) 
        //这里的maxmin作为有参的结果赋给max这个值在进行打印输出。
        double max =maxmin(30.0,20.0);
        //这里的方法没有返回值,只用来传递参数来进行输出。
        System.out.println(max);
    
    public static double maxmin(double a,double b)
        int result=0;
        if(a==b)
            System.out.println("a=b");
            return 0;//终止方法
        
        if (a>b)
            //这里从高到低需要进行强转
            result=(int) a;
        else
            result=(int) b;
        
        return result;
    
    public static int maxmin(int a,int b)
        int result=0;
        if(a==b)
            System.out.println("a=b");
            return 0;//终止方法
        
        if (a>b)
             result=a;
        else
            result=b;
        
        return result;
    

四:数组

1.维数组

1.数组的定义

1.数组是一个容器,可以用来存放多个数组。

2.数组的特点:

数组是一种引用类型。

数组中存在的多个数据的类型必须是统一的。

数组的长度在运行中是不可以改变的。

2.动态和静态数组

静态数组:

在创建的额时候不指定其长度,直接指定内容。

格式: 数据类型[ ] 数组名字 = new 数据类型[ ]元素1,元素2,元素3......;

           数据类型[ ] 数据名称 = 元素1,元素2,元素3......;

注意事项:虽然静态数组没有指出其长度,但是我们可以根据内容来计算出长度。

                  静态数组的创建过程可以拆分为两个步骤,如果携程省略的格式,那么就不可以拆分成两个步骤。

    /**
     * @Author代码贩子、 --南京邮电大学
     */
    public static void main (String[] args) 
        //直接创建一个数组,里面全是int数字,
        int[] arr1 = new int[]10,20,30,40,50;
        int[] arr2 = 10,20,30,40,50;
        //拆分写
        int[] arr3;
        arr3=new int[4];
        int[] arr4;
        arr4= new int[]10,20,30,40,50;
    

动态数组:

动态数组在进行创建的时候直接指定数据的长度。

格式:数据类型[ ] 数组名称 = new 数据类型[数组长度];

解释含义:

左边的数据类型:数组当中保存的数据类型全都是统一的数据类型

左边的[ ]:代表的是一个数组

数组名称:我们定义的数组名称

new ;代表的是创建数组的动作。

右边的数据类型:必须和左边的数据类型是相统一的

右边的[ ] :也就是数组上可以保存多少个数据,为一个int数字。

    /**
     * @Author代码贩子、 --南京邮电大学
     */
    public static void main (String[] args) 
        //声明一个可以保存300个int的数据的数组。
        int[] arr1 = new int[300];
        double[] b=new double[300];//创建一个数组,可以存放300个double数据
        String[] c=new String[5];//创建一个数组,可以存放300个String数据
    

3.数组的打印输出

如果直接打印数组的名字,则输出的是数组在内存地址中对应的哈希值。如果想要出现数据应该是数组名字+[索引值](索引值是int数字,代表的是数组当中元素的编号。)(索引值是从0开始的,一直到数组的长度-1为止)

使用动态初始化数组的时候,其中的元素都会存在一个默认值,其默认规则如下所示:

(静态初始化也有默认值的过程,只不过系统自动马上将默认值替换为了大括号当中的具体数值)

默认规则

整型

浮点型

字符型

布尔型

引用类型

默认类型

0

0.0

\\u0000

false

null

    /**
     * @Author代码贩子、 --南京邮电大学
     */
    public static void main (String[] args) 
        //静态初始化:创建+赋值
        int[] a =1,2,3,4,5;
        System.out.println(a[0]);
        //动态初始化:包含默认

以上是关于Java入门级基础教学(史上最详细的整合)的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu零基础教学-史上最详Ubuntu20.04安装教程,超级详细,强烈建议收藏!

Ubuntu零基础教学-史上最详Ubuntu20.04安装教程,超级详细,强烈建议收藏!

历经5年锤炼(史上最适合初学者入门的Java基础视频)--视频列表

史上最详细vue的入门基础

「万字图文」史上最姨母级Java继承详解

史上最详细JVM与性能优化知识点综合整理