首页 > 代码库 > java自学之路-day04

java自学之路-day04

JAVA04

switch语句

  1. 格式:

switch(){

case:常量1

执行语句

break;

default:

执行语句

break;

}

  1. case满足执行case执行语句,跳出循环;否则执行default执行语句;
  2. 案例:输出星期几
  3. switch表达式类型

l  jdk 0-1.4 byte  short  int  char

l  jdk1.5 byte    short  int  char  enum

l  jdk1.7 byte    short  int  char  enum  String(sun公司被收购后)

  1. case穿透

case穿透现象指的是: switch语句会根据表达式的值从相匹配的case标签处开始执行,一直执行到break语句处或者是switch语句的末尾。如果没有break语句,那么就会从表达式的值相匹配的case标签处开始执行,一直执行到switch语句的末尾,这种从其中的一个case处开始,忽略后面的值的匹配,直接运行case的内容的现象就是穿透的现象。没有break会一直穿透执行。

switch(){

  case1:

case2:

case3:

case4:

执行语句

break;

}

数组

  1. 一种容器用来存数据
  2. 数据多了存数组
  3. 定义规则

l  数据类型

l  容器大小

l  公式:数据类型[] 变量名=new 数据类型[存储元素的个数];

l  数据类型:存储元素的数据类型

l  [ ] 表述数组

l  new 创建容器的关键字

l  [ ] 表示数组

l  个数:就是存储数据的个数

l  恒定数组大小,一旦确定就不能改变

l  引用类型

l  内存问题

  1. 操作系统管理硬件(内存)
  2. Jvm找系统
  3. 操作系统分给jvm一部分内存,由jvm管理
  4. JVM对自己的内存进行了划分,分成五个区域

a)         寄存器:内存和CPU之间 (和我们无关)

b)         本地方法栈:JVM完成不了的功能,JVM调用系统中的功能(目前无关)

c)         方法和数据的共享区:运行时期class文件进入的内存部分(与开发有关)

d)         方法栈:所有的方法运行的时候,进入的内存部分

e)         堆:存储的容器和对象

java开辟关闭内存空间不用自己动手关闭

c++关闭内存空间需要手动关闭

 

   一维数组

l  数组内存问题

数组内存图:

public class ArrayDemo{

  main(){

   int[] arr=new int[3];

}

 

}

a)         首先 方法区 运行ArrayDemo.class文件

b)         然后main进入方法栈运行,即压栈运行(先进的在底下),方法栈开辟一部分来运行main方法

c)         然后 新建数组容器 JVM在对内存里面开辟一部分空间存储数组容器并按照内存大小平均分,每一数据在内存中有内存地址,(自动编号,最小值是0,最大值存储长度-1,自动编号即为索引,下标,角标);数组首地址就是第一个数据的地址,每一个数据的地址都是连续的;

d)         然后虚拟机将地址返回给定义的变量arr,变量arr存储的是一个地址,arr指向内存地址;

e)         打印arr :多次打印不一样因为内存随机分配

 

f)          打印完毕main方法结束,arr变量失效,堆里面的分配空间也失效

g)        

 

l  数组访问公式

  1. 每一数据在内存中有内存地址,(自动编号,最小值是0,最大值存储长度-1,自动编号即为索引,下标,角标);
  2. 变量名[下标];

l  Length属性

  1. 最大索引 Length-1;

l  数组定义方式

  1. 定义的同时对元素进行赋值

a)         数据类型[] 变量名=new 数据类型[] { };

Int [] arr=new inr[]{1,2,3,4,5};

b)         不允许在中括号中定义长度,否则编译失败

c)         避免后面的元素说超过或者少于定义空间,而造成的逻辑错误和空间浪费风险;

  1. 没有new关键字

a)         数据类型[] 变量名={};

b)         方便简单,推荐使用;

l  对元素进行赋值

Int [] arr=new int[5];

arr[1]=3;

l  总结

int[] arr=new int[5];

arr[1]=2;

int[] arr=new int[]{2};

int[] arr={2};

l  遍历数组

  1. for循环实现

a)         for循环 一直循环次数,计数器思想

b)         while 未知循环此时

  1. for(i=0;i<arr.length-1;i++){

输出i

}

l  异常

  1. 越界异常(负数索引和超序访问)

a)         编译成功

b)         运行出错(只有运行时才会使用内存加载方法并执行里面的操作,见上面的内存问题)

  1. 空指针异常

a)         正常现象

b)         非正常现象

赋值数组元素为nul,null为特殊常量,引用类型都可以为null,此时变量不保存此元素地址或不指向此元素地址,此时再次访问那此元素就会报空指针异常,虚拟机堆中清理此元素内存,切无法进行再次分配地址;

 

 

 

l  数组最值思想

 

  1. Int[] arr={1,5,8,9,3,};  (前面不可以,后面可以多一个逗号, )

Int max=arr[0];

  1. for(i=1;i<arr.length-1;i++){

If(max<arr[i])

{

   max=arr[i];

}

 

}

输出max

二维数组(存储多个一维数组)

l  定义方式

  1. Int [] [] arr=new int[3] [4];
  2. 多了一个[]
  3. 表示:二维数组中,有三个一维数组,三个一维数组中,每个数组的长度是4

l  内存图

  1. 创建时,首先退内存中分配一个内存空间给二维数组,分为三个部分
  2. 然后再为每一个一维数组各分配一个内存空间,每个一维数组中,又分为四部分;每一个一维数组都有一个首地址,
  3. 二维数组里面存的是每一个一维数组的首地址
  4. 二维数组变量指向二维数组的首地址,即第一个一维数组的地址;

 

  1. 用二维数组定义特殊情况

l  Int[] [] arr=new Int [3][];

l  此时不能用 需要 赋值二维数组 arr[0]=new int [5];…

  1. 简单的定义方式

a)         Int [] [] arr={{1,4},{5,6},{7,8,9} };

b)         允许一维数组长度各不相同

l  遍历

  1. 两个for循环来进行遍历
  2. 外层循环遍历二位数组
  3. 内存循环遍历一维数组
  4. for(int i=0;i<arr.length;i++){

for(int j=0;j<arr[i].length;j++){

  输出arr[i][j];

  

}

}

 

练习:随机点名器

技术分享

  1. 功能:

a)         存储全班同学姓名

b)         总览全班同学姓名

c)         随机出一个人的姓名

  1. 注释量达到源代码的30%

 java语言的注释

  程序注释是源代码的重要部分,对于一份规范的程序源代码而言,注释应该占到源代码的1/3以上。几乎所有的编程语言都提供了注释的方法,一般的编程语言都提供基本的单行注释和多行注释,java语言也不例外,除此之外,java语言还提供了一种文档注释。java语言的注释有三种

单行注释

多行注释

文档注释

  1. 3.      re

核心词汇 

英 [re?]     美 [re?]    

prep. 关于

pref. 再,重新

n. 长音阶的第二音

  1. 方法中的选择功能实现问题

l  如果用户进行功能选择输入时,输入了规定外的其他字符时,可以利用else语句重新执行该方法,实现功能完善,前提是方法是仅作为界面展示时,否则无法进行重新执行;

 04.zip

java自学之路-day04