栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

Java第二周总结

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java第二周总结

选择结构语句switch

选择结构语句之switch

格式:
switch(表达式或者某个变量值){
case 值1:
语句1;
break ;
case 值2:
语句2:
break ;

default:
语句n;
break ;
}

执行流程

switch接收结果:
1)接收的结果和case后面的值1进行对比,成立,执行语句1,break 结束语句;
2)值1和switch接收的结果不匹配,和值2进行比较,成立,执行语句2, break,结束语句;
3)…
如果上面case都不匹配,执行default语句,语句n,break ,结束…
面试题:
switch后面的跟的值的数据类型可以有哪些类型?
基本数据类型:byte,short,int,char
jdk5以后可以是枚举类型 enum:引用类型
jdk7以后可以是String字符串 :引用类型

switch语句中的注意事项也是 (考点)

1)关于switch中的case语句后面只能常量,不能是变量 (体现Java是一种强类型语言)
2)在书写switch语句的标准结构,不忘了break,如果语句中忘了书写break,会出现一个现象:case穿透!
3)关于switch语句的结束条件
a)要么遇见break结束
b)程序默认执行到末尾
4)关于default语句可以在switch语句中的任何位置,不影响语句的执行流程;
不管在任何位置,只要case语句都不匹配,执行default;
如果default语句在语句中,break不要省略
如果default语句的末尾,break可以省略;

循环结构语句

for :使用最多:
普通for循环
求和思想
统计思想
格式
for(初始化语句;条件表达式;控制体语句或者步长语句){
循环体语句;
}

执行流程
1) 初始化语句:给变量赋值 (只执行一次)
2)然后执行条件表达式,看其是否成立,如果成立,执行的是循环体语句------>再次回到控制体语句或者步长语句—>变量自增或者自减
3)再次执行条件表达式,是否成立,成立,继续循环体语句---->再次回到控制体语句或者步长语句---->变量自增或者自减
4)一直执行到条件表达式不成立,for循环结束;

什么是水仙花数 :
三位数,每个位上的数据的立方相加的,是这个数据本身 157

public class ForDemo4 {
    public static void main(String[] args) {
        // 1)定义一个统计变量count:从0开始
        int count = 0 ;
        //  2)水仙花:满足3位数,每一个位的数据的立方和相加是这个数据本身
        //                  100-999之间
        for(int x = 100 ; x <=999; x++){
            // 3)确定每各位的数据本身
            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)){
                //count++
                count ++;
                System.out.println("第"+count+"次,"+"水仙花数是:"+x);
            }
        }
        System.out.println("共有"+count+"个");
    }
}

while:其次才是这个while

while循环的格式
经常使用的格式
初始化语句;
while(条件表达式){
循环体语句 ;
控制体语句或者步长语句;
}

执行流程:
首先,先初始化语句,对变量赋值;
执行条件表达式,是否成立;成立,则执行循环体语句,依次控制体语句进行变量控制
—>再次判断条件表达式是否成立,成立,执行循环体语句—>控制体语句进行变量控制


当条件表达式不成立,while循环结束;
注意事项:控制体语句不要忘了,否则死循环;
while循环和for循环的区别?

1)共同点:能够描述一种循环思想,可以将重复性冗余代码进行优化,提供程序阅读性
2)不同点
a)格式不同

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

b)场景不同
for循环:明确循环次数 (开发中优先都使用for)
while循环:不明确循环次数:
举例:
键盘录入一个数据,玩猜数字游戏,你也不知道到录入多少次才能猜中;

c)是否节省内存资源:从格式上说
for循环的好处:循环结束之后,变量被释放了
而while循环,循环结束,依然能够使用这个变量,相对for循环格式来说,比较耗费内存资源;

实际开发中:for是使用最常见的;

循环语句之do-while循环

实际开发中用的非常少的;
这个循环语句和while,for循环最大的区别:
当条件不成立的,循环体至少执行一次;
jdk一些源码就会用到do-while

格式
初始化语句;
do{
循环体语句 ;
控制体语句 ;
}while(条件表达式) ;
死循环(两种格式)
第一个格式
for(;{
循环体语句;
}

第二个格式:
while(true){ //死循环格式中使用比较多
循环体语句;
}

for循环嵌套
for(初始化语句1;条件中表达式1;控制体语句1){
//外层循环
// 循环体语句又是一个for循环
for(初始化语句2;条件表达式2;控制体语句2){
//内层循环 循环体语句…
}
}

流程控制语句

跳转控制语句
break:中断结束(结束循环或者switch)(不能单独使用,只能在循环中或者switch中用)
continue:只是结束当前循环,继续立即进入下次循环(循环语句中使用)
return:结束方法的 (结束有具体返回值的方法:讲方法的时候返回值的意义是什么?)

Java中的方法

方法的定义格式
在Java中,使用{}代码块,将我们的业务逻辑进行实现,给{}起一个名字,就是方法;

在Java中,定义方法的格式 有两种

  1. 第一种:

               有具体返回值的方法定义
       格式
               public static 返回值类型  方法名(形式参数类型1 参数名1,形式参数类型2 参数名3....){
    					 //业务逻辑进行实现:举例:完成两个数据比较,获取最大值
                   return 具体的结果;
               }
         解释说明
                   public:权限修饰符:公共的公开的/访问权限足够大
                   static:静态修饰符(面向对象中)
                   返回值类型:就是数据类型,现在只学习了基本数据类型,
                   方法名:满足标识符的规范 :方法名和变量名, "小驼峰命名法"
                                   一个单词:字母小写
                                   多个单词:第一个单词字母全部小写,从第二个单词开始,每一个单词首字母大写,其余小写
               形式参数类型1/形式参数类型2:就是数据类型, 现在只学习了基本数据类型,
               参数名1/参数名2 :就是变量名,起一个名字
    	调用格式
    	在main方中 
    	赋值调用 
    	接收的结果类型 变量名 = 方法名(实际参数1,实际参数2,...) ; 
    	实际参数:直接赋值或者main中键盘录入
    
  2. 第二种

    		没有具体返回值类型的方法定义和调用
    当某个业务逻辑里面比如完成的数据的直接输出,展示数据----System.out.println("xxx") ;
    或者:业务逻辑中可能数据某个数据在进行排序 数据交换
    没有没有具体的结果是直接输出在控制台上,
    此时java提供了一个关键字 void,代替返回值类型(Java定义方法语法的要求:需求没有具体返回结果,就是用void)
    定义格式:
    public static void  方法名(形式参数类型1 参数名称1,形式参数类型2 参数名2,....){
    }
    
    调用格式:
           1)单独调用
           2)输出调用
           3)赋值调用        ![比较三个数大小](https://img-blog.csdnimg.cn/13bb229f74ef482899c42615f3c68e96.png)
    

定义方法的注意事项
1)方法和方法是平级关系,不能够在一个方法中定义另一个方法,只能在一个方法中调用另一个方法
2)在定义方法的时候,方法中的形式参数必须带上数据类型,因为Java是一个强类型语言;
3)调用方法的时候,实际参数不需要带数据类型;
4)在定义方法的时候,有{的地方不能分号;,有分号;的地方不能{
5)有具体返回值类型的方法,必须携带return,否则报错;

Math的随机数使用
jdk提供了类:java.lang.Math
java.lang包下的类不需要导包
针对数学运算的工具类,提供了很多的方法;
获取伪随机数,取值范围:[0.0,1.0)
public static double random():
快速使用: Math.random()—获取一个随机数

方法重载
什么是overload?就是方法重载
方法重载:为了某个功能扩展性,多个方法方法名可以相同(完全相同),参数列表不同,与返回值无关
参数列表不同
1)参数个数不 同
2)参数类型不 同
3)考虑参数类 型的顺序

jvm的内存分配
1)栈内存 :存储的就是局部变量
2)堆内存 :以后 new出来的东西都在堆中 (new :创建对象)
3)方法区 :
xxx.class :字节码文件区域
后面static区域
常量池区域.
4)寄存器
5)本地方法区—> 都和cpu和系统相关的


数组

Java中数组就是容器,这个容器 “只能存储同一种类型的元素”
在数组中定义格式
动态初始化和静态初始化

  1. 动态初始化:自己定义数组的长度,数组的元素有系统(jvm)默认分配

    	格式: 
    			数据类型[] 数组名称 = new 数据类型[数组长度] ;
    			数据类型 数组名称[] = new 数据类型[数组长度] ;
    
  2. 静态初始化:直接我们自己给定的了元素内容,数组的长度由系统默认分配

    	原生的格式写法: 
    			数据类型[] 数组对象名 = new 数据类型[]{元素1,元素2,元素3.....} ;
    			数据类型 数组对象名[] = new 数据类型[]{元素1,元素2,元素3.....} ; 
    	静态初始化的简写格式 
    			数据类型[] 数组对象名 = {元素1,元素2,元素3.....} ; 推荐的写法
    			数据类型 数组对象名[] = {元素1,元素2,元素3.....} ; 
    

在数组中有一个特有的属性:length
数组名称.length:获取数组长度
数组中的最大索引值: 数组名称.length-1
java.lang.ArrayIndexOutOfBoundsException:数组角标越界异常;
访问了数组中的不 存在的索引就会出现这种问题;
异常:Exception
编译时期异常:idea写代码的,编译通过不了,无法运行; 语法有问题;
运行时期异常: 开发者在编写代码的时候,大部分逻辑性不严谨,比如: 数组的5个元素,角标最大4,你访问角标5
数组的遍历

数组的其他基本应用
最值问题:最大值
1)定义一个参照物 array[0]就是最大值
2)从角标1开始遍历数组的其他元素
3)判断:使用后面的元素依次和参照物比较
如果后面元素比参照物,将最大值修改了
4)获取最大值;

数组元素查表法 :通过数组名称[索引值]确定元素
给定一个数组,快速获取数组中的某个元素:数组名称[索引值]
//字符串数组—里面存储字符串
//创建数组的格式:静态初始化
数据类型[] 数组名称 = {元素1,元素2,…} ;
数据类型:
基本数据类型
引用数据类型

			String[] strArray = {"星期一","星期二","星期三"....}, ;
					需求:
							键盘录入一个数据:
							显示"星期"
public class ArrayDemo2 {
    public static void main(String[] args) {

        //键盘录入一个数据
        Scanner sc = new Scanner(System.in) ;

        //提示并录入数据
        System.out.println("请您输入一个数字(0-6):") ;
        int num = sc.nextInt() ;

        //已知字符串数组--->里面存储 了一些元素
        String[] strArray = {"星期一","星期二","星期三","星期四","星期五","星期六","星期日"} ;
        System.out.println("你查询的星期是:"+strArray[num]) ;
    }
}

基本元素查询:查询数组中某个元素的角标值

public class ArrayDemo3 {
    public static void main(String[] args) {
        //已知这个数组:
        int[] arr = {69,57,13,24,87} ;
        //调用方法
        int index = getIndex(arr, 13);//找13
        System.out.println("index:"+index);
        System.out.println("----------------------------") ;
        int index2 = getIndex(arr, 133);//找13
        System.out.println("index2:"+index2);
        System.out.println("-----------------------------") ;
       
        //调用
        int index3 = getIndex2(arr, 255);
        System.out.println("index3:"+index3);
        System.out.println("------------------------------");
        int index4 = getIndex2(arr, 87) ;
        System.out.println("index4:"+index4);

    }

    //方式2:假设思想
    public static int getIndex2(int[] array,int target){
        //1)先定一个变量index:表示索引值
        int index = -1 ; //假设角标找不到
        //2)遍历数组array
        for(int x = 0 ; x 
            //获取到每一个元素array[x]
            //如果 target  == array[x]:找到了,
            if(target==array[x]){
                //将index修改
                index = x ;
                break ;
            }
        }
        return  index ;
    }
    
    
    public static int getIndex(int[] array,int target){//array:传递一个数组,target:查询目标元素
        //遍历数组,获取所有元素
        for(int x = 0 ; x < array.length; x++){
            //array[x]:每一个元素就可以获取到
            //判断
            //如果array[x] 和target 相等,就找到了,x返回
            if(target == array[x]){//考虑找到的情况
                return  x ;
            }
        }
        //查询数组:找不到元素,返回负数  -1
        return  -1 ;
    }
}

对于基本元素查找法的----数组的元素的内容,可以无序/可以有序
int[] arr = {87,56,13,24,17};
弊端: 每次查询元素的时候,都是从头查到尾

高级数组中的元素:二分搜索法(折半查询) :高级查询算法
前提条件:数组的元素必须有序!
特点:能够节省查询时间,效率高
数组逆序

冒泡排序:
两两比较,将较大的值往后放,第一次比较完毕,最大值出现在最大索引处;
依次这样比较,可以得到排好序的数组;
规律
1)两两比较,将较大的值往后放,
2) 第一次有0个不比
第二次有1个不比

每次比较,就会减少一次比较
比较的次数:数组长度-1次

面向对象的思想特点以及特征

什么是面向对象?
Java语言 —对比 面向过程: 代表 c语言
面向对象的思想特点
1)更符号生活中的思想行为习惯
2)让复杂的事情简单化
3)从执行者变成了指挥者
面向对象的三大特征
封装,继承,多态 (整个java最重要的)
Java重要特点:代码的健壮性(里面涉及Java面向的对象特征以及java设计模 式)

基本类型作为形式参数和引用类型(数组,类,接口) 作为形式参数的特点
基本类型作为形式参数,形式参数改变不影响实际参数;
引用类型作为形式参数,形式参数的改变直接影响实际参数;


是能够描述现实世界事物一组属性和行为的集合;
类和事物的关系:一一对应的关系
事物:一定现实真实存在的
学生事物属性: 姓名,身高, 年龄 等等…
行为: 主要目的学习…
Java中规定,需要定义类描述这个事物 ,Java中最基本单元就是类
代码体现 描述哪一个事物
class 类名{ //类名:满足标识符的规范: 见名知意
}

封装

封装:
就是将显示世界事物的属性隐藏了(加入一个关键字private),
私有的,无法直接访问的,对外数据的安全性!(外界不能访问的)
对外提供一个方法,公共的(public)访问方法(setXXX()/getXXX())
重新创建这个类 来优化上面的代码;加入封装思想

注意事项:
以后在书写的代码的时候,写一个类,描述真是存在事物的属性的时候, 需要属性(英文单词字母全部小写)全部加入private

private关键字的特点
1)被private修饰的成员变量以及成员 方法只能在本类中访问
2)可以修饰成员变量也可以成员方法,就是为了外 界不能直接访问
3)被private修饰的成员变量/成员方法可以间接的通过 通过的方法访问;

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1039071.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号