二、JAVA基础(个人向)

JAVA基础(个人向)

1. 流程控制语句

1.1 选择语句Switch

  • 其优势在于列举出少量可选择的问题上很有逻辑和效率。相比于if选择结构,嵌套的减少也能增加程序的可读性,但是在运行效率上,比起if会稍微差点。

例如:

  1. 选择题问题
import java.util.Scanner ;
class SwitchTest{
	public static void main(String[] args){
		//先给出几个选项
		System.out.println("电视剧<<我们结婚吧>>杨桃谁扮演的?") ;
		System.out.println("65 高圆圆");
		System.out.println("66 刘亦菲");
		System.out.println("67 张佳宁");
		System.out.println("68 高斯林");

		//创建键盘录入对象
		Scanner sc = new Scanner(System.in) ;
		
		//录入并提示
		System.out.println("请您输入数据:") ;
		int choice = sc.nextInt() ;
		
		//强转
		char choiceNum = (char)choice;
		
		//提供switch语句选择判断
		switch(choiceNum){
		case 'A':
			 System.out.println("恭喜您,答对了...") ;
			 break ;
		case 'B' :	 
			System.out.println("对不起,错误...") ;
			 break ;
		case 'C' :	 
			System.out.println("对不起,错误...") ;
			 break ;
		case 'D' :	 
			System.out.println("对不起,错误...") ;
		   // break ;	 
		default:
             break ;		
		}	
	}
}
  1. 选择奥运五环福娃
import java.util.Scanner;
public class Demo7 {
	//北京欢迎你
	public static void main(String[] args) {
		Scanner input =new Scanner(System.in);
		int num = input.nextInt();
		switch(num) {
		case 1:System.out.println("贝贝");break;
		case 2:System.out.println("晶晶");break;
		case 3:System.out.println("欢欢");break;
		case 4:System.out.println("迎迎");break;
		case 5:System.out.println("妮妮");break;
		default :System.out.println("北京欢迎你");
		}
	}
}

1.2 循环语句for

  • 格式

    for(初始化语句;条件表达式;步长/控制体语句){
    循环体语句;
    }

  • 执行流程
    1)执行初始化化语句:给变量进行赋值
    2)满足条件:成立
    3)执行循环体语句
    4)执行步长/控制体语句

例如:

  1. 输出10次helloworld
for(int x = 0 ; x < 10 ; x ++){//x=0 ,0<10,1<10 9<10  x++ -- x = 10 10 < 10 (false)
			System.out.println("helloworld") ;//1),2)....10)
		}
  1. 1-100之间的和
int sum = 0 ;
for(int x = 1 ; x <= 100 ; x ++){
		//循环体
		sum += x ;
	}
System.out.println("1-100之间的和:"+sum) ;
  1. 水仙花数
for(int x = 100 ; x < 1000; x++){
			//定义三个变量:分别获取每个位上的数据本身
			int ge = x % 10 ;
			int shi = x / 10 % 10 ;
			int bai = x / 10 /10 % 10 ;
			//判断
			if(x == (ge*ge*ge+shi*shi*shi+bai*bai*bai)){
				//获取水仙花
				System.out.println("水仙花数是:"+x) ;
			}

1.3 循环语句while

  • 格式
    while(条件表达式){
    循环体语句;
    控制体语句/步长语句;
    }

  • 执行流程
    1)初始化话语句进行赋值
    2)条件表达式成立,
    执行循环体语句
    再次执行控制体语句
    3)再次判断条件表达式是否成立,


    当条件不成立,则while结束

  • 应用场景
    不明确循环次数的时候使用

  • 效率
    for循环节省内存空间

例如:

  1. 输出10次"helloworld"
int x = 1 ;
		while(x<=10){
			System.out.println("helloworld") ;
			x ++ ; //控制体语句不要忘
		}
  1. 1-100的偶数和
int x = 1 ; 
		int sum = 0 ;
		while(x<=100){
			if(x % 2 ==0){
				sum += x ;
			}
			
			x ++;
		}
		System.out.println("1-100之间的偶数和:"+sum) ;
  1. 5的阶乘
int jc = 1 ;
		int j = 1 ;
		while(j<=5) {
			jc*= j ;
			j++ ;
		}
		System.out.println("5的阶乘是:"+jc) ;

1.3 循环语句do……while

  • 格式
    初始化语句;
    do{
    循环体语句;
    控制体语句;
    }while(条件表达式) ;

  • for,while,do……while的区别
    dowhile:优先循环体语句,即使条件不成立,循环体至少执行一次!
    开发中优先for,其次while,再次do-while

例如:

  1. 1-100之间的和
int sum = 0 ;
int x = 1 ;
do{
	sum += x ;
	x ++ ;
}while(x<=100) ;
//输出sum
System.out.println("1-100之间的和是:"+sum) ;

1.4跳转控制语句

  • break
    结束中断,结束循环,在switch和循环中使用

  • continue
    继续, 在循环中使用,结束当前循环,立即进入下一次循环

  • return
    很少单独使用,结合有具体返回值类型的方法使用

2.方法

  • 概述
    就是使用{}代码块包起来,并且起一个名字

2.1 有具体返回值类型的方法

  • 格式
    public static 返回值类型 方法名(参数类型1 变量名1,参数类型2 变量名2…){
    方法中的业务逻辑代码…
    return 结果;
    }

  • 注意事项
    1)明确返回值类型
    2)明确参数类型以及参数个数
    3)方法和方法是平级关系,不能进行嵌套
    4)在Java中,定义方法的时候形式参数必须携带数据类型
    5)调用方法的时候,传递的实际参数不需要在携带数据类型
    6)定义方法的时候: 有{括号的地方不能有分号

2.2 没有具体返回值类型的方法

  • 定义
    针对某个功能代码块{} 没有具体的返回值类型,按照语法规定:必须有一个值

  • 格式
    public static void 方法名(形式参数列表){
    方法体中的内容:直接输出 或者进行其他操作;(不需要return语句了)
    }

  • 注意事项
    1)只能单独调用
    2)不能输出调用
    3)不能赋值调用

2.3 方法重载

  • 目的
    为了提高某个功能的扩展性,在有的时候:同一个方法,可以传递任何数据类型

  • 特点
    方法名相同,参数列表不同,参数个数不同,参数类型不同,与返回值无关

  • 重载的方式
    举例:
    sort(byte[] byte)
    sort(double[] d)
    sort(int[] i)
    sort(float[] f)

3.数组

3.1 概念

数组就是存储多个数据的容器,必须保证容器中的数据类型一致

3.2 数组的定义

  • 动态初始化
    给定了数组的长度,系统默认对元素进行初始化!
    数据类型[] 数组名称 = new 数据类型[数组长度] ;
    数据类型 数组名称[] = new 数据类型[数组长度] ;

  • 静态初始化
    我们给定的具体的元素,数组长度由系统确定
    数据类型[] 数组名称 = new 数据类型[]{元素1,元素2,元素3…} ;
    数据类型 数组名称[] = new 数据类型[]{元素1,元素2,元素3…} ;

3.3 数组应用场景

  • 获取数组中的最大值
    1)定义max变量:将数组的第一个元素赋值给他:默认最大值
    2)从角标1开始遍历其他元素
    在里面判断
    如果后面的元素都大于max
    将后面的元素赋值给max变量
    3)最终可以获取最大值
  • 获取数组中的最小值
    1)定义变量min :将数组的第一个元素赋值给min:默认最小值
    2)遍历其他元素
    判断:如果后面的元素都min小,
    将后面的元素赋值给min
    3)获取最小值
  • 令一个数组静态初始化
    int[] arr = {69,87,43,21,15}
  • 数组的元素逆序
    将arr[0]元素和arr[arr.length-1-0]进行互换
    将arr[1]元素和arr[arr.length-1-1]进行互换

    保证数组的长度/2
  • 数组的查表法
    通过数组名称[索引值]来确定元素内容
  • 高级查找:二分查找
    前提条件:数组必须有序的

3.4 高级排序:冒泡排序

  • 排序思想
    两两比较,较大的值往后放,第一次比较完毕,最大值出现在最大索引处
    依次这样比较,可以得到排好序的数组!

  • 核心代码

for(int x = 0;x < arr.length-1 ; x ++){//外层:比较的次数
			for(int y = 0 ;y < arr.length-1-x; y++){ //内层循环:进行比较互换
				//判断
				if(arr[y] > arr[y+1]){
					int temp = arr[y] ;
					arr[y] = arr[y+1] ;	
					arr[y+1] = temp ;
				}
			}
		}

4.面向对象

4.1 面向对象基于面向过程

1. 面向过程: (自己就是执行者)
代表:c语言
1)需求分析
2)定义功能代码块(方法)
3)在main 方法调用,显示结果

2.面向对象:
代表java语言
需要找一个对象完成一件事件:比如 :键盘录入一个数据 (jdk提供—>Scanner)
创建键盘录入对象
提示并录入数据
展示结果

4.2 思想特点及其特征

思想特点
1)更符号我们生活中是思想行为习惯
2)让复杂的事情简单化
3)我们从执行者变成了指挥者

特征
封装,继承,多态

举例:大象装冰箱

//测试类
class Demo{
		public static void main(String[] args){
			创建冰箱类对象
			冰箱类对象.open() ;
			创建出大象类对象
			大象类对象.in() ;					
			冰箱类对象.close() ;					
		}
}			
			
//定义一个大象类
class 大象类{				
		//应该定义一个功能:大象有进去的功能
		public  void in(){  //将static去掉
			System.out.println("大象进去了...") ;
		}
}
			
//冰箱类
class 冰箱类{
		//开
		public void open(){
			System.out.println("开冰箱门") ;
		}
				
		//关
		public void close(){
			System.out.println("关冰箱门") ;
		}
}

4.3 类的定义以及测试

举例:手机类和手机测试类

手机类

class Phone{
	
	//成员变量
	String brand ; //品牌
	int price ; //价格
	String color ;//颜色
	int memory ; //内存
	
	//成员方法
	public void callPhone(String toName){ //参数toName:给谁打电话
		System.out.println("给"+toName+"打电话") ;
	}
	public void sendMsg(){
		System.out.println("可以使用手机发短信...") ;
	}
	public String playGame(String gameName){
		return "可以玩"+gameName+"游戏" ;
	}
	public void study(String className){
		
		System.out.println("学习"+className) ;
	}
}

手机测试类

class PhoneTest3{
	
	public static void main(String[] args){
		//创建两个手机类对象
		//定义第三个Phone类型的变量 p3
		//将第一个手机类对象赋值给p3变量
		//再次通过p3.访问成员变量 ="赋值"
		//输出:第一个手机类对象中的所有属性
		
		Phone p1 = new Phone() ;
		p1.brand = "小米11" ;
		p1.price = 3999 ;
		p1.color = "黑色";
		p1.memory = 128;
		System.out.println(p1.brand+"---"+p1.price+"---"+p1.color+"---"+p1.memory) ;
		Phone p2 = new Phone() ;
		p2.brand = "华为mate40保时捷版" ;
		p2.price = 12999;
		p2.color = "天空之境";
		p2.memory = 128 ;
		System.out.println(p2.brand+"---"+p2.price+"---"+p2.color+"---"+p2.memory) ;
		
		//定义第三个Phone类型的变量 p3
		Phone p3 = p1 ;
		p3.brand = "iphone11" ;
		p3.price = 1299 ;
		p3.color ="土豪金" ;
		p3.memory = 64 ;
		System.out.println(p1.brand+"---"+p1.price+"---"+p1.color+"---"+p1.memory) ;	
	}
}

4.4 成员变量和局部变量

1)在程序中的书写位置不同

局部变量: 方法定义中或者方法声明上

成员变量:在类中,成员方法外定义的变量

2)在内存中

局部变量:在栈内存中

成员变量:在堆内存中

3)生命周期不同

局部变量:随着方法调用而存在,随着方法调用完毕而消失!

成员变量:随着对象的创建而存在,随着对象创建完毕之后,不会立即消失,
需要等待GC(垃圾回收器空闲时候回收掉!)
GC算法----->标记算法
标记—清除

4)初始化不同

局部变量:可以先定义,但是必须在使用之前必须赋值,否则:可能尚未初始化变量

成员变量:可以不初始化,它存在系统默认初始化!(根据类型判定)

4.5 形式参数具体问题

1.实际类型
如果一个方法的形式参数是引用类型是具体类,那么调用该方法时,实际参数需要传递的是当前类的具体对象

2.引用类型
如果方法的形式参数是一个引用类型,就需要创建当前类对象

4.6 匿名对象

1.概念
没有名字的对象

2.格式
new 类名() ;

3.特点
可以作为参数进行传递
在开发中,匿名对象使用一次即可!
(因为没有栈内存变量指向堆内存地址,
直接是在堆内存开辟空间,使用完毕,立即被回收!)

4.7 封装

1.目的

为了保证的数据的安全性,将某个类的成员属性隐藏(将属性(成员变量)“私有化”),并为之提供公共(public)访问方式(setXXX()/getXXX())

2.private关键字的特点

1)可以修饰成员变量,也可以修饰成员方法,但是都只能在本类访问,外界类不能够访问

2)这些被私有修饰的成员变量,或者成员方法,可以间接通过公共方法来访问

3.私有类成员属性的调用

给类中的成员加入私有修饰,对外提供公共的方法(setXXX()/getXXX())

举例:

class Student2{
	//成员变量私有化
	private String name ;//姓名
	private int age ; //年龄
	private String gender ;//性别
	private String hobit ; //爱好
	
	//成员方法
	
	public void study(){
		System.out.println("学习JavaEE...") ;
	}
	//玩游戏
	public String playGame(String gameName){
		return "会玩"+gameName ;
	}
	
	//运行
	public void sport(){
		System.out.println("喜欢踢足球...") ;
	}
	 
	//一些公共访问方法:给姓名,年龄,性别,爱好赋值  /还需要获取这些内容
	//给学生的姓名赋值
	public void setName(String n){ //"高圆圆"
			name = n ;//name = n = "高圆圆"
	}
	//获取学生的姓名--->返回值:String
	public String getName(){
		return name ;
	}
	
	//给学生的年龄赋值
	public void setAge(int a){ //41
		age = a ; //age = a = 41
	}
	//获取学生的年龄:int类型
	public int getAge(){
		return age ;
	}
	
	//给学生的性别赋值
	public void setGender(String g){ //"女"
		gender = g ; 	//gender = g  ="女"
	}
	
	//获取学生的性别:String
	public String getGender(){
		return gender ;
	}
	
	//给学生的爱好赋值
	public void setHobit(String h){	//"跑步"
		hobit = h ;	//hobit = h = "跑步"
	}
	//获取学生的爱好:String
	public String getHobit(){
		return hobit ;
	}
	
	
}
//测试类
class StudentTest2{
	
	public static void main(String[] args){
		//创建学生类测试
		Student2 s = new Student2() ;
		/*
			s.name = "高圆圆" ;
			s.age= 41 ;
			s.gender = "女" ;
			s.hobit = "跑步" ;
		*/
		
		//对象名.公共的成员方法名() 赋值
		s.setName("高圆圆") ;
		s.setAge(41) ;
		s.setGender("女") ;
		s.setHobit("跑步") ;
		System.out.println("当前学生的姓名是:"+
		s.getName()+",年龄是:"+s.getAge()+",性别是:"+s.getGender()+",爱好是:"+s.getHobit()) ;
	
		//其他成员方法
		s.study() ;//学习
		String str = s.playGame("lol") ;
		System.out.println(str) ;
		s.sport() ;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值