java入门-面对对象-类-方法-数组-分支语句-循环语句精细讲解

一 JAVA数据类型

在这里插入图片描述

public class leixing{
 			public static void main(String[]args){
 						byte b =10	;
 						short s =	20;
 						int i = 30 ;
 						System.out.println(i);
        		long n = 999999;
        		System.out.println(n);
        		float f = 10.1f;
        		System.out.println(f);
        		double d = 20.2
            System.out.println(d);
 						
 			}
}

Java中的类型

  1. 整数的四种类型 Byete Short Int Long:定义long类型时需要加入L的标识.
  2. 浮点数的俩种类型 float double :定义float类型变量时需要加入F的标识.
  3. 字符 char
  4. 布尔 Boolean
  5. 在这里插入图片描述

二 类型的练习

public class self{
  	public static void main(String[]args){
      			String name = "坤坤" ;
      			int age = 18;
      			char  gender = '男';
        		double height= 180.1;
      			boolean flag = true; 
      //输出
      			System.out.println(name);
      			System.out.println(age);
      			System.out.println(gender);
      			System.out.println(height);
      			System.out.println(flag);
      			
    }
}
  1. 先定义变量与类型
  2. 给予赋值
  3. 输出变量名

三 键盘录入

import java.util.Scanner;  //导包 :在类之上导包
public claas ScannerDemol{
  public static void main (String[]args){
    //创建对象,表示我现在准备用这个Scanner这个类
    Scanner sc = new Scanner(System.in);
     System.out.prntln("请输入一个整数")
    //接收数据
    //变量i记录了键盘录入的数据
    int i =sc.nextInt();
  	System.out.println(i);
  }
}
//导包
import java.util.Scanner;
public class day5{
  	public static void main(System[]args){
      Scanner sc = new Scanner(System.in);//创建对象
      System.out.println("请输入第一个数字");
      int num1 = sc.nextInt(); //接收键盘输入的数字
      System.out.println("请输入第二个数字");
      int num2 = sc.nextInt(); //接收键盘输入的数字
      System.out.println(num1+num2);//输入俩个数字后相加
    }
}

四 1.隐式转换/强制转换

  1. 类型不相同时需要转换成同一个类型才能继续计算

  2. Byte,short,char转换时直接转换成int类型参与计算

 public class day6{
   public static void main(String[]args){
     byte b1 = 10;
     byte b2 = 20;
     byte result = b1+b2;
     System.out.println(result);
   }
 }
  1. 如果强制转换Byte成Byte会报错 ;数值超过了byte的总值
  2. 而Byte运算时会自动转为int类型参与计算
  3. 在这里插入图片描述

2.字符串的拼接

  1. 字符和整数拼接时并不会相加而是相连接在一起
public class day7{
  public static void main(String[]args){
    String num1 = "1111";
    int num2 = 222;
    System.out.println(num1+num2)
  }
}

3.录入三位数,获取它的个,十,百,位

import java.util.Scanner;
public class day8{
  public static void main(String[]args){
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入一个三位数");
    int num = sc.nextInt();
    //获取个位:%10
    //获取十位:/10%10
    //获取百位:/100%10
    int ge = num % 10;
    int shi = num /10 %10;
    int bai = num /100 %10;
    System.out.println(ge);
    System.out.println(shi);
    System.out.println(bai);
  }
}

4.算数运算符

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1CRRooiG-1669532926306)(image-20221118204831382.png)]

5.自增自减运算符

在这里插入图片描述

6.赋值运算符

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hyehmbYn-1669532926307)(image-20221118205357743.png)]

7.关系运算符

在这里插入图片描述

8.逻辑运算符

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

9.运算符的优先级

在这里插入图片描述

五 原码,反码,补码

暂无!

六 流程控制语句

if语句

在这里插入图片描述

import java.util.Scanner;//导包
public class day9{           //主语句,类,类名
   public static void main(String[]args){  //主语句
   	Scanner sc = new Scanner(System.in);
   	System.out.println("请输入你的酒量");
   	int num = sc.nextInt();//提取键盘输入的值
   	if (num>=2){
   		System.out.println("小伙子酒量不错");//第一个输出语句
   	}else {
   		System.out.println("小伙子酒量还得练啊");//第二部分输出语句
   	}
   }
}

在这里插入图片描述

  1. if———else语句
  2. 根据判断语句,如果为真则输出if语句中的第一个输出语句,反之为假输出else语句
    3.在这里插入图片描述
public class day10分支语句{
	public static void main(String[]args){
		int ranking = 2; //这里如果为2贼小红不会做他的女朋友
    if(ranking==1){
      System.out.println("小红做他的女朋友");
       }else {
		   System.out.println("小红不会做他的女朋友");
	   }
	}
}

在这里插入图片描述

在这里插入图片描述

  1. 根据流程语句来判断true /false

  2. 在这里插入图片描述

if else语句

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

import java.util.Scanner;
public class day10分支语句{
  public static void main(String[]args){
    	Scanner sc = new Scanner(System.in);
      	System.out.println("请录入一个整数表示你的成绩");
		int score= sc.nextInt();
    if(score>0&&score<=100){
      if(score>=95&&score<=100){
        System.out.println("送自行车一辆");
      }else if(score>90&&score<=94){
        System.out.println("送游乐园一日游");
      }else if(score>80&&score<=93){
        System.out.println("送变形金刚");
      }else{
        System.out.println("吊树上打一顿");
      }
    }
  }
}

在这里插入图片描述

  1. 如果超过100贼不会继续输出下面的语句
  2. 修改后
import java.util.Scanner;
public class day10分支语句{
  public static void main(String[]args){
    	Scanner sc = new Scanner(System.in);
      	System.out.println("请录入一个整数表示你的成绩");
		int score= sc.nextInt();
    if(score>0&&score<=100){
      if(score>=95&&score<=100){
        System.out.println("送自行车一辆");
      }else if(score>90&&score<=94){
        System.out.println("送游乐园一日游");
      }else if(score>80&&score<=93){
        System.out.println("送变形金刚");
      }else{
        System.out.println("吊树上打一顿");
      }
    }else{
		System.out.println("你搁这吹牛逼呢");
	}
  }
}

在这里插入图片描述

  1. 超过数值后会直接跳过中间的语句,直接输出最后语句else语句.
练习题

1.根据不同会员的等级打折不同的力度

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Switch语句

  1. switch语句格式
  2. 在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

case穿透__ Switch__

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zOzOKyY0-1669532926314)(image-20221119133457135.png)]

  1. 语句中没有书写brke语句,Switch语句就会一直输出到最后一条语句
  2. default语句可以在语句中的任何位置
  3. jdk12中的简化写法
  4. [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rkTeDZxN-1669532926314)(image-20221119134010715.png)]

在这里插入图片描述

for循环

在这里插入图片描述

在这里插入图片描述

  1. for语句循环体结构输出步骤
    2.在这里插入图片描述
练习题1

打印十次Hello world

public class for1{
  public static void main(String[]args){
    for(int i =1;i<=10;i++){
      System.out.println("Hello world")
    }
  }
}

小知识

在这里插入图片描述

  1. 求和的变量不能定义在循环的里面,因为变量只在所属的大括号中有效
  2. 输出语句写在循环体的里面会造成,当前变量只会在本次循环中有效
  3. 在下次的循环中,变量会从内存中消失,不会累加

while语句

在这里插入图片描述

1~100打印

在这里插入图片描述

for循环与whlie循环对比

在这里插入图片描述

在这里插入图片描述

七 数组

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. 动态初始化

  2. 在这里插入图片描述

  3. 数组中的比大小

  4. 在这里插入图片描述

练习题1

在这里插入图片描述

在这里插入图片描述

​ 3.
在这里插入图片描述

​ 4.println中的ln是输出时换行,去掉ln课使输出时不换行,在一行中显示
在这里插入图片描述

八 java的内存分配

在这里插入图片描述

  1. [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ODeWc5Js-1669532926326)(image-20221120142156622.png)]

    1. 栈 堆 方法区 本地方法栈 寄存器

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

九 方法

在这里插入图片描述

1. 方法的格式

在这里插入图片描述

在这里插入图片描述

2.方法的定义/调用方式

在这里插入图片描述

(image-20221120143825058.png)]

public static void 方法名

在这里插入图片描述

​ 2.打包代码后利用方法名调用方法

public class day11{
  public static void main(String[]args){
    printGFInfo();
  }
  public static void printGFInfo(){
    System.out.println("小红");
    System.out.println("萌妹子");
    System.out.println("18岁");
  }
}

3.带参数的方法定义和调用

在这里插入图片描述

在这里插入图片描述

4.带返回值的方法

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

总结

在这里插入图片描述

  1. 如果有返回值就要写返回值类型,没有就写void
  2. 方法名要驼峰命名,看词知意

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

return 关键字

5.方法重载

  • 在同一个类中,方法名相同,参数不同,就构成了重载,与返回值无关

在这里插入图片描述

在这里插入图片描述

练习题4

定义数组的遍历:

public class day12{
public static void main(String[]args){
  int[] arr = {11,2,23,55,66,77};//定义数组
  fn(arr);//调用方法遍历数组
}
public static void fn(int[]arr){
  		System.out.print("[");
  		for(int i = 0;i<arr.length;i++){
    	 		if(i==arr.length - 1){
            	System.out.print(arr[i]);
          }else{
            System.out.print(arr[i]+",");
          }
  	}
  		System.out.print("]");
	}
}

在这里插入图片描述

练习题5

  1. 设计一个方法数组的最大值,并求出最大返回 值.

    public class day13{
       public static void main(String[]args){
         //1.定义数组
         int[] arr={11,22,33,55,66,77,5};
         
         //2.调用方法求最大值
          int max = getMax(arr);
         //3.打印
    	 System.out.println(max);
       }
      //定义方法
      //首先问自己:我要干嘛?  求最大值
      //我干这件事,需要完成什么?  数组
      //是否返回?  返回
      public static int getMax(int[] arr){
        int max = arr[0];
        for(int i = 0 ; i<arr.length;i++){
          if(arr[i]>max){
            max = arr[i]; 
          }
    		}
          return max;
      }
    }
    

    在这里插入图片描述

练习题6

  1. 定义一个方法判断数组中某一个数是否存在,将结果返回给调用处

  2. public class day14{
      public static void main(String[]args){
        //定义数组
        int []arr = {22,66,55,99,77,58,44,};
        //判断一个数字在数组中是否存在/调用方法
        boolean flag = contains(arr,123);
        //打印出来
    	System.out.println(flag);
      }
      //定义方法
      //首先问自己:我要干嘛?  判断数字是否存在
      //我干这件事,需要完成什么?  数组    数字是什么
      //是否返回?  返回  true  false
      public static boolean contains(int[]arr, int number){
        for(int i = 0;i<arr.length; i++){
          if(arr[i] == number){
            return true;
          }
        }
        return false;
    	//什么时候才能判定数组中存在于不存在,得先遍历完后数组在进行比较后才能确定是否存在.
      }
    }
    

在这里插入图片描述

练习题7

定义一个方法copyOfRange(int[] arr,int to,int from);

功能: 将数组arr中从索引from(包含from)开始,到索引to结束(不包含to)的元素到新数组中,将数组返回

public class day15{
  public static void main(String[]args){
    /*定义一个方法copyOfRange(int[] arr,int to,int from);

功能: 将数组arr中从索引from(包含from) 开始
到索引to结束(不包含to)的元素到新数组中,将数组返回*/
     //1.定义原始数组
    int [] arr = {11,22,33,55,66,77,88,99,40}
    //2.调用方法拷贝数组
    int[] copy = copyOfRange(arr,from:3,to:7);
    //遍历copy
    for(int i = 0 ; i<copy.length;i++){
      System.out.println(copy[i]+"  ");
		}
  }
  //将数组arr中从索引from(包含from)开始,到索引to结束(不包含to)的元素复制到新的数组中
 public static int[]  copyOfRange(int[]arr,int from,int to){
    //1.定义数组
  int[] newArr = new int[to-from];
  //2.把原始数组arr中的from到to对应的元素,直接拷贝到newarr中
  for(int i=from;i<to;i++){
    //伪造索引的思想
    int index = 0;
    newArr[index] = arr[i];
	}
  //把数组返回
   return newArr;
 }
}

6.方法的内存

在这里插入图片描述

  1. 方法调用的基本内存原理
  • 先进后出
  1. 基本数据类型 引用数据类型
  • 整数类型 除了基本数据类型的所有类型
  • 浮点数类型
  • 布尔类型
  • 字符类型

当我们传递基本数据类型时,传递的是真实的数据,形参的改变,不影响实际参数的值

变量作用的范围只在本方法内有效

传递引用数据类型时,传递的是地址值,形参的改变,影响实际参数的值

在这里插入图片描述

综合练习

在这里插入图片描述

在这里插入图片描述

public class day2 {
	public static void main(String[]args) {
		//ASCII码表
		var chs = new char[52];//定义数组
		for(int i = 0;i<chs.length;i++) {
			if(i<=25) {
				chs[i]=(char)(97+i);//添加小写26个字母
				
		}else {
			chs[i] = (char)(65+i-26);//添加大写26个字母
			}
		}
		String result = " "; 
		
		//System.out.println(chs);//打印所有的字母
		
		Random r = new Random(); //随机抽四次,抽取数组中的索引
		  
		for(int i =0;i<4;i++) {
			int randomIndex=r.nextInt(chs.length);
			result = result +chs[randomIndex];
			//System.out.println(chs[randomIndex]);
		}
		int number = r.nextInt(100);//随机抽取数字
		
		result = result + number;//生成最终结果
		
		System.out.println(result);//打印最终结果
	}
}

十 面向对象

在这里插入图片描述

1.面对对象重点学习

  1. 学习获取已有的对象并使用
  2. 学习如何自己设计对象并使用 :面向对象的语法

在这里插入图片描述

  • 设计对象并使用

  • 类和对象

  • 类(设计图):是对象共同特征的描述;

  • 对象:是真实存在的具体东西

  • 在JAVA中,必须先设计类,才能获取对象

2.如何定义类

  1. 成员变量(代表属性,一般是名词)
  2. 成员方法(代表行为,一般为动词)
  3. 构造器
  4. 代码块
  5. 内部类

3.定义类的注意事项

  • 用来描述一类事务的类,专业叫做:Javabean类.;

  • 在javabean类中是不写main类方法的

  • 在以前编写main方法的类,叫做测试类.

  • 我们可以在测试类中创建javabean类的对象并进行赋值调用

    在javabean类中可以编写属性和行为

  • 成员变量:代表属性

  • 成员方法:代表行为

  1. 类名是字母建议大写,需要见名知意,驼峰命名
  2. 一个Java文件中可以定义多个class类,且只能是一个类是public修饰,而且public修饰的类名必须成为代码文件名.实际开发中建议还是一个文件定义一个class类
  3. 成员变量的完整定义格式是:修饰符 数据类型 变量名称 = 初始化值 一般无需指定初始化值,存在默认值

4.如何使用对象

在这里插入图片描述

  1. 类和对象是什么

  2. 类:是共同特征的描述(设计图),

  3. 对象:是真实存在具体实列

  4. 如何得到对象

在这里插入图片描述

  1. 拿到对象后能做什么?
  • 拿到对象后可以获取成员变量的值,或者给成员变量赋值
  • 拿到对象后可以让成员方法帮我们做事情

在这里插入图片描述

在这里插入图片描述

5.封装

  1. 拿到需求之后,精确的定义属性与方法

对象代表什么,就得封装对应的数据,并提供数据对应的行为

在这里插入图片描述

  1. private关键字
  • 是一个权限修饰符
  • 可以修饰成员
  • 被private修饰的成员只能在本类中才能访问

在这里插入图片描述

  1. 利用get/set方法保护数据
  2. set:给成员赋值
  3. get: 用于获取成员变量的值
    在这里插入图片描述

6.this关键字

  1. 把变量定义在方法里它就是局部变量
  2. 而把变量定义在类当中就是成员变量

就近原则:

输出时有同一个相同的变量名,就会使用就近原则,使用最近的变量名

在输出时加上this. 输出语句就会输出成员变量中的变量

7.构造方法

在创建对象的时候给成员变量进行赋值

在这里插入图片描述

  1. 作用:在创建对象的时候给成员变量初始化的.

在这里插入图片描述

在这里插入图片描述

构造方法是在定义变量时会直接被调用

如果我们自己没有写如何的构造方法;那么虚拟机给我们加一个空参构造方法

public class gaozao1 {

        private String name;
        private int age;

        public gaozao1 (){

        }

        public gaozao1(String name, int age){
            this.name = name;
            this.age = age ;

        }
        public String getName() {
            return name;
        }
        public void setName(String name){
            this.name = name;
        }


        public int getAge() {
            return age;
        }

        public void setAge(int age){
            this.age = age;
        }
}

注意事件

  1. 构造方法的定义
  • 如果没有定义构造方法,系统将给出一个默认的无参数构造方法
  • 如果定义了构造方法,系统将不会再提供默认的构造方法

​ 2.构造方法的重载

  • 带参构造方法,和无参构造方法,俩者方法名相同,但是参数不同,这叫构造方法的重载

​ 3.构造方法的使用方式

  • 无论是否使用,都手动书写无参数构造方法,和带全部参数的构造方法

总结

  1. 创建对象的时候,由虚拟机自动调用,给成员变量进行初始化的.

​ 2.无参数的构造方法:初始化对象时,成员变量的数据均采用默认值

​ 3.有参数的构造方法:在初始化对象的时候,同时可以为对象进行赋值

​ 4.如何类定义出来默认就带了无参数构造器

​ 5.一旦定义了有参数的构造器,由系统提供的默认无参数构造器就没有了,此时就需要自己写无参数构造器

​ 6.在写构造器时必须都手动写上无参数构造器和全部参数构造器方法

创建对象的时候,虚拟机会自动调用构造方法,作用是给成员变量进行初始化的

8.标准 JavaBenan

  1. 类名需要见名知意
  2. 成员变量使用private
  3. 提供至少两个方法
  • 无参构造方法

  • 带全部参数构造方法

    4.成员方法

    • 提供一个成员变量对应的 set() get()
  • 有其他行为,也需要写上

快捷键

alt + insert

alt+fn+inser

9.面向对象内存

  • 字节码文件加载时进入 方法区(元空间)
  • 调用方法运行时就会进入栈空间,使用后会从栈空间出去
  • 在new时new出来的东西就会在堆中开辟一个空间并会产生一个地址值

​ 一个对象的内存步骤

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Os50NKTg-1669532926340)(image-20221123171355070.png)]

  1. 加载class文件
  2. 申明局部变量
  3. 在堆内存中开辟一个空间
  4. 默认初始化
  5. 显示初始化
  6. 构造方法初始化
  7. 将堆内存中的地址值赋值给左边的局部变量

基本数据类型

  • 是直接记录被赋值的值,数据值是存储在自己的空间中的
  • 赋值给其他的变量,也是赋值的真是的值

引用数据类型

  • 记录堆中的地址值,从而根据地址值去获取相应的值
  • 赋值给其它变量时,赋值的是地址值

this的内存原理

this作用:区分局部变量和成员变量

this的本质:所在方法调用者的地址值

this是指向调用者使用的地址值

成员变量和局部变量的区别

}

    public void setAge(int age){
        this.age = age;
    }

}




### 注意事件

1. 构造方法的定义

- 如果没有定义构造方法,系统将给出一个默认的无参数构造方法
- 如果定义了构造方法,系统将不会再提供默认的构造方法





​	2.构造方法的重载

- 带参构造方法,和无参构造方法,俩者方法名相同,但是参数不同,这叫构造方法的重载





​	3.构造方法的使用方式

- ==无论是否使用,都手动书写无参数构造方法,和带全部参数的构造方法==







### 总结

1. 创建对象的时候,由虚拟机自动调用,给成员变量进行初始化的.



​	2.无参数的构造方法:初始化对象时,成员变量的数据均采用默认值



​	3.有参数的构造方法:在初始化对象的时候,同时可以为对象进行赋值



​	4.如何类定义出来默认就带了无参数构造器



​	5.一旦定义了有参数的构造器,由系统提供的默认无参数构造器就没有了,此时就需要自己写无参数构造器



​	6.在写构造器时必须都手动写上无参数构造器和全部参数构造器方法



==创建对象的时候,虚拟机会自动调用构造方法,作用是给成员变量进行初始化的==

## 8.标准 JavaBenan

1. 类名需要见名知意
2. 成员变量使用private
3. 提供至少两个方法 

- 无参构造方法

- 带全部参数构造方法

  4.成员方法
  - 提供一个成员变量对应的		set()     	get()

- 有其他行为,也需要写上





快捷键

alt + insert 

alt+fn+inser



## 9.面向对象内存

- 字节码文件加载时进入 方法区(元空间)
- 调用方法运行时就会进入栈空间,使用后会从栈空间出去
- 在new时new出来的东西就会在堆中开辟一个空间并会产生一个地址值



​				一个对象的内存步骤


![在这里插入图片描述](https://img-blog.csdnimg.cn/b4147c0a50024a3c948b3a5c5435799e.png)



1. 加载class文件
2. 申明局部变量
3. 在堆内存中开辟一个空间
4. 默认初始化
5. 显示初始化
6. 构造方法初始化
7. 将堆内存中的地址值赋值给左边的局部变量







基本数据类型

- 是直接记录被赋值的值,数据值是存储在自己的空间中的
- 赋值给其他的变量,也是赋值的真是的值

引用数据类型

- 记录堆中的地址值,从而根据地址值去获取相应的值
- 赋值给其它变量时,赋值的是地址值





### this的内存原理

this作用:区分局部变量和成员变量

this的本质:所在方法调用者的地址值

this是指向调用者使用的地址值





### 成员变量和局部变量的区别

![在这里插入图片描述](https://img-blog.csdnimg.cn/b70acccd3e634b108f3959d309815deb.png)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值