当前位置: 首页 > article >正文

java基础3(黑马)

一、循环

1.while循环

package cn.chang.loop; public class WhileDemo3 {
  
      public static void main(String[] args) {
  
          // 目标:掌握while循环的书写格式,以及理解其执行流程        // 需求:打印多行Hello World        int i = 0;        while (i < 5) {
  
              System.out.println("Hello World");            i++;        }    }}

使用规范:如果一开始不知道循环次数的情况下,建议使用while循环解决更专业。一开始就知道循环几次的情况下,使用for循环解决更专业。

2.do-while循环

package cn.chang.loop;public class DoWhileDemo4 {
  
      public static void main(String[] args) {
  
          // 目标:掌握do-while语句的书写格式、执行流程、应用场景        // 打印多行Hello World        int i = 1;        do {
  
              System.out.println("Hello World");            i++;        } while( i <= 3);    }}

do-while的特点:先执行后判断。

do-while控制流程:

for循环和while循环的其他区别:

  1.在for循环中,控制循环的变量只能在循环中使用。

  2.while循环中,控制循环的变量在循环后还是可以继续使用。

3.死循环

可以一直执行下去的一种循环,如果没有干预不会停下来。

死循环的写法:

经典应用场景:服务器程序。

循环嵌套:循环中又包含嵌套。

例:

package cn.chang.loop;public class LoopNestedDemo6 {
  
      public static void main(String[] args) {
  
          // 目标:搞清楚循环嵌套的执行流程        // 场景:老婆罚你说三天,每天5句我爱你。        for (int i = 1; i <= 3; i++) {
  
              System.out.println("第" + i + "天: ");            for (int j = 1; j <= 5; j++) {
  
                  System.out.println(j + ": 我爱你");            }            System.out.println("----------");        }    }}

打印星型案例:

​​​​​

package cn.chang.loop; public class LoopNestedDemo6 {
  
      public static void main(String[] args) {
  
          // 目标:搞清楚循环嵌套的执行流程        for (int i = 1; i <= 3; i++) {
  
              for (int j = 1; j <= 4; j++) {
  
                  System.out.print("*");   //打印*,不换行            }            System.out.println();    //换行        }    }}

4.跳转关键字

break:跳出并结束当前所在循环的执行,也就是结束循环。

continue:用于跳出当前循环里的当次执行,直接进入循环里的下一次执行。

package cn.chang.loop; public class BreakContinueDemo8 {
  
      public static void main(String[] args) {
  
          // 目标:掌握break和continue的作用        // break: 跳出并结束当前所在循环的执行        for (int i = 1; i <= 5; i++) {
  
              System.out.println("我爱你" + i);            if (i == 3) {
  
                  break;            }        }    }}

​​​​​​​

public class BreakContinueDemo8 {
  
      public static void main(String[] args) {
  
          // 目标:掌握break和continue的作用        // break: 跳出并结束当前所在循环的执行        for (int i = 1; i <= 5; i++) {
  
              if (i == 3) {
  
                  continue;            }            System.out.println("洗碗" + i);        }    }}

注意事项:

break: 只能用于结束所在循环,或者结束所在switch分支的执行。

continue:只能在循环中使用。

4.Random的使用

注意:nextInt(n) 功能只能生成:0 至 n-1之间的随机数,不包含n。

package cn.chang.random;import java.util.Random;public class RandomDemo1 {
  
      public static void main(String[] args) {
  
          // 目标:掌握使用Random生成随机数的步骤        Random r = new Random();        for(int i = 0; i < 10; i++) {
  
              System.out.println(r.nextInt(10));        }    }}

Random生成指定区间随机数:

技巧:减加法。

先区间减去1,让前面的数为0,变成0-9,那么nextInt函数中参数填写9,然后把1加回来


​​​​​​​

package cn.chang.random;import java.util.Random;public class RandomDemo1 {
  
      public static void main(String[] args) {
  
          // 目标:掌握使用Random生成随机数的步骤        // 生成1-10之间的随机数        Random r = new Random();        for (int i = 0; i < 20; i++) {
  
              int data = r.nextInt(10) + 1;            System.out.println(data);        }    }}

生成3-17的随机数

先减去3, 让区间变成0-14, nextInt里面填14,然后再把3加回来。

代码如下:

package cn.chang.random;import java.util.Random;public class RandomDemo1 {
  
      public static void main(String[] args) {
  
          // 目标:掌握使用Random生成随机数的步骤        // 生成3-17之间的随机数        Random r = new Random();        for (int i = 0; i < 20; i++) {
  
              int data = r.nextInt(14) + 3;            System.out.println(data);        }    }}

二、数组

数组:就是一个容器,用来存储同一批同种类型的数据。

1.数组的定义

静态初始化数组:定义数组的时候直接给数组赋值

静态初始化数组的格式:

注意:

1.“数据类型[] 数组名” 也可写成 “数据类型 数组名[]”。

2.什么类型的数组只能存放什么类型的数据。

package cn.chang.define; public class ArrayDemo1 {
  
      public static void main(String[] args) {
  
          // 目标:掌握数组的定义方式:静态初始化数组        int[] ages = new int[]{12, 24, 36};        double[] scores = new double[]{89.9, 99.5, 59.5, 88};         // 简化写法        int[] ages2 = {12, 24, 36};        double[] scores2 = {89.9, 99.5, 59.5, 88};         // “数据类型[] 数组名” 可以写成 ”数据类型 数组名[]"        int ages3[] = {12, 24, 36};        double scores3[] = {89.9, 99.5, 59.5, 88};         // 什么类型的数组,只能放什么类型的数据        int[] ages4 = {12, 24, 36, "chang"};   // 报错            }}

数组在计算机中的基本原理:

数组变量指向数组对象。

ages变量中保存的是数组对象的地址。

2.数组的访问

就是访问数组中的数据。

语法格式:数组名称[索引]。

数组中的数据默认是有编号的,默认是从0开始,这个编号就是索引。

数组的长度属性:length

package cn.chang.define;public class ArrayDemo2 {
  
      public static void main(String[] args) {
  
          // 目标:掌握数组的访问        int[] arr = {12, 24, 36};        System.out.println(arr[0]);        System.out.println(arr[1]);        System.out.println(arr[2]);        System.out.println(arr[3]);    }}

3.数组的遍历

遍历:就是一个一个的访问容器中的数据。

package cn.chang.define;public class ArrayDemo3 {
  
      public static void main(String[] args) {
  
          // 目标:掌握数组的遍历        int[] ages = {12, 24, 36};        for(int i = 0; i < ages.length; i++) {
  
              System.out.println(ages[i]);        }    }}

动态初始化数组:定义数组的时候,先不存入具体的元素值,只确定数组存储的数组类型和数组的长度。后期再为该数组赋值。元素的默认值都是有规则的

注:静态初始化数组和动态初始化数组的写法是独立的,不可以混用。

动态初始化数组元素默认值规则:

三、数组在计算机中的执行原理

java虚拟机要运行程序,必须要对内存进行空间的分配和管理。

Java内存的分配介绍:

1)方法区:将编译后的字节码文件放到方法区中。

2)栈内存:方法运行时所进入的内存,变量也是在这里。main就是在这里执行的。

3)堆内存:new出来的东西会在这块内存中开辟空间并产生地址。new的数组是放在堆里

基本类型:存储的是具体的值。

引用变量:存储的是地址。

多个变量指向同一个数组的问题:

package cn.ensource.memory;public class ArrayDemo2 {
  
      public static void main(String[] args) {
  
          // 目标:认识多个变量指向同一个数组对象的形式,并掌握注意事项        int[] arr1 = {11, 22, 33};         // 把int类型的数组变量arr1赋值给int类型的数组变量arr2        int[] arr2 = arr1;    // 赋值的是地址         System.out.println(arr1);    // 地址:[I@4eec7777        System.out.println(arr2);    // 地址:[I@4eec7777         arr2[1] = 99;        System.out.println(arr1[1]);    }}

注:如果某个数组变量存储的地址是null,那么该变量将不再指向任何数组对象。


http://www.kler.cn/a/538057.html

相关文章:

  • 全国路网矢量shp数据(分不同类型分省份)
  • Spring Boot统一异常拦截实践指南
  • 【Linux】29.Linux 多线程(3)
  • 网络爬虫技术如何影响网络安全的
  • 【Postman接口测试】新闻列表查询接口测试用例设计与实践
  • 网络安全:挑战、技术与未来发展
  • 2014 年中央、国家机关公务员录用考试 《申论》(市地以下)真题详解
  • 人工智能:从概念到未来
  • lvglllllllllll
  • GRU 和 LSTM 公式推导与矩阵变换过程图解
  • 2024 JAVA面试题
  • 【C++入门讲解】
  • uniapp商城之购物车模块
  • Vmware 与 Device/Credential Guard不兼容解决方法
  • CSP晋级组比赛生成文件夹与文件通用代码Python
  • oCam:免费且强大的录屏软件
  • curl 查看HTTP 响应头信息
  • 简化API 工作流程:Apipost整合了 Postman、Swagger 和 JMeter
  • JS实现灯光闪烁效果
  • 基于对比增强的超声视频的域知识为乳腺癌诊断提供了深度学习
  • kafka服务端之日志存储
  • 计算机考研复试准备之Python编程技巧-自用
  • Kotlin 的作用域函数:apply、let、also、run,以及 with、takeIf 和 takeUnless。函数的用法和使用场景
  • Java即时编译器(JIT)的原理及在美团的实践经验
  • 1456. 定长子串中元音的最大数目
  • openGauss 3.0 数据库在线实训课程6:学习用户一次只能连接到一个数据库,没法访问其他数据库的对象