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

时间: 2024-10-10 19:17:27

java自学之路-day04的相关文章

【转】JAVA自学之路

JAVA自学之路 一: 学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向呢? 我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我),当你要走向社会的时候,就不要再把自己当成学生,不要把自己的将来交给别人,学会运用自己的眼睛去观察,去了解这个世界吧. 每个培训机构都会宣传自己的好处,并不能说明大的趋势. 一些新闻文章很有可能是枪手写的,不必太过相信.国外背景的

[转载] JAVA自学之路

原文链接http://blog.csdn.net/mengxin846/article/details/2219844 虽然文章有点旧但还是有些启发的,譬如要事第一,好读书不求甚解. JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向呢? 我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我),当你要走向社会的时候,就不要再把自己当 成学生

马士兵:JAVA自学之路

JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训.决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向呢?我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我),当你要走向社会的时候,就不要再把自己当成学生,不要把自己的将来交给别人,学会运用自己的眼睛去观察,去了解这个世界吧. 每个培训机构都会宣传自己的好处,并不能说明大的趋势.一些新闻文章很有可能是枪手写的,不必太过相信.国外背景的教师和课

Java 自学之路

Java 自学之路 前言 从运行第一个程序开始算起,我接触编程也有三年的时间了.最初是从51单片机入门学习的C语言,班里面的大佬带着我一起做小项目,但是因为没人教,基本靠自学,学得慢,写的代码也烂,很没有章法.后来大三下半学期开始准备考研(从电子跨考计算机),从零开始学习数据结构,这才算是真正地入了编程的门.至于考研,后来就放弃了(别问我为什么放弃,当时脑子抽了),去了一家小公司实习.这家公司主要做机器视觉的项目,当时去面试的时候觉得挺高大上,技术 leader 也挺和蔼,感觉是很务实的一个团队

java自学之路-day17

JAVA17 多线程 进程和线程的概念 进程 l  正在运行中的程序 l  程序存储在硬盘中 当进入内存运行时 l  内存中的每一个程序就叫进程 l  并且每一个进程都有一个独立的功能 线程 l  迅雷中的多线程下载 l  main方法中有很多方法一次排列 如果其中一个方法执行了很多次循环 那么下一个方法就不会执行 从入口main到结束,一条路走到底 必须一个一个的执行 这种程序是单线程程序 效率慢 l  例如 多台电脑网吧上网 多条路通行 线程 概念 l  CPU 中央处理器 inter AW

Java自学之路---DotCom

引言 我从接触编程以来,一直是一个C/C++程序猿,因为我喜欢编程时,那种接地气的感觉,认为只有自己管理内存的使用,心理才踏实.但随着工作中不断增加的见闻,不断的从博客和源码中获得新的见解,我发现这个时代已经发生了变化,我们有强劲的硬件资源.我们有久经考验的框架和源码,我们最宝贵的是花在编码上的时间.所以我决定带着之前C/C++的经验,来认识JAVA是门怎样的语言,以及它的编程理念可以给我带来怎样的好处. 如何学习 和我学习其他语言一样,我主要还是依靠书本,电子书或者是纸质书,这样学习起来才是最

java自学之路-day16

JAVA16 IO流 转换流 引入 l  中文系统默认编码表GBK l  FileWriter的构造方法假定默认编码GBK l  但是一些文本文件有可能是其他编码方式 l  所以引入转换流 可以对编码表进行设定 l  对之后开发互联网程序很重要 概述 l  字符流的一种 l  字符与字节的桥梁 l  继承Writer类 OutputStreamWriter l  Java.io. OutputStreamWriter l  继承Writer类 l  字符输出流 向文本文件写入数据 l  字符流转

java自学之路-day18

数据库 数据库 概念 l  对于一串数据修改其中的一条数据 l  如果用io流就需要全盘读写 然后找到其中的一行 进行修改 l  或者使用数组进行修改 l  这样太复杂 效率慢 所以需要引用数据库 l  数据库本质是一个文件系统 可以看做是一个具有很好的处理数据能力的容器 和集合 数组 都一样 l  里面有严格的数据存储格式 l  数据库管理系统是用一个软件管理数据库 l  常见的数据库管理系统 MYSQL  开源免费 瑞典的公司开发 sun公司收购  Oracle收购了sun MYSQL6.x

java自学之路-day10

JAVA10 Eclipse快捷键补充 l  选中类Ctrl T 继承树 l  Ctrl 或者f3 查看源码 多态会跳转到调用父类中 l  Java中lang包中的所有类 不需要导包 直接用  例如 System String l  Ecplise 中的Jre System Library是默认的eclipse依赖jre的类库 在该位置可以查找到平常使用的String 类 Random类 Math类 l  Jdk 包括 jre和开发工具,jre包括jvm 和运行时所需要的核心类库 l  运行 h