文档版本 开发工具 测试平台 工程名字 日期 作者 备注
V1.0 2016.02.24 lutianfei none

第三章Java基础语法
方法
方法重载
数组
Java中的内存分配
数组操作常见的两个小问题
数组练习

第三章Java基础语法

方法

  • 简单的说:方法就是完成特定功能的代码块

    • 在很多语言里面都有函数的定义
    • 函数在Java中被称为方法
  • 格式:
  1. 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) {
  2. 函数体;
  3. return 返回值;
  4. }
  • 详细解释:

    • 修饰符,目前就用public static,后详解。
    • 返回值类型:就是功能结果的数据类型。
    • 方法名:符合命名规则即可,方便我们的调用。
    • 参数:
      • 实际参数:就是实际参与运算的。
      • 形式参数:就是方法定义上的,用于接收实际参数的。
    • 参数类型:就是参数的数据类型。
    • 参数名:变量名
    • 方法体语句:就是完成功能的代码
    • return:结束方法的。
    • 返回值:就是功能的结果,由return带给调用者。

方法重载

  • 方法重载概述

    • 在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
  • 方法重载特点

    • 与返回值类型无关,只看方法名参数列表
    • 在调用时,虚拟机通过参数列表的不同来区分同名方法
  • eg:

  1. class FuncionTest{
  2. public static void main(String[] args){
  3. //Test1
  4. short b1 =3;
  5. short b2 =4;
  6. System.out.println("short:"+compare(b1,b2));
  7. }
  8. //*******************************************************//
  9. // Function :byte type
  10. public static boolean compare(byte a, byte b){
  11. System.out.println("byte type");
  12. return a==b;
  13. }
  14. //-------------------------------------------------------//
  15. //*******************************************************//
  16. // Function :short type
  17. public static boolean compare(short a, short b){
  18. System.out.println("short type");
  19. return a==b;
  20. }
  21. //-------------------------------------------------------//
  22. //*******************************************************//
  23. // Function :int type
  24. public static boolean compare(int a, int b){
  25. System.out.println("int type");
  26. return a==b;
  27. }
  28. //-------------------------------------------------------//
  29. //*******************************************************//
  30. // Function :long type
  31. public static boolean compare(long a, long b){
  32. System.out.println("long type");
  33. return a==b;
  34. }
  35. //-------------------------------------------------------//

数组

  • 数组概念

    • 数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。
    • 数组既可以存储基本数据类型,也可以存储引用数据类型。
  • 数组的定义格式

    • 格式1:数据类型[] 数组名;
    • 格式2:数据类型 数组名[];
    • 注意:这两种定义做完了,数组中是没有元素值的。还需对数组的元素进行初始化。
  • eg:

    • A:int[] a; 定义一个int类型的数组a变量
    • B:int a[];定义一个int类型的a数组变量
  • 注:

    • 1:针对数组定义两种格式,推荐使用第一种格式。因为第一种的可读性更强。第二种早期的时候确实有很多人这样用。不过,现在这样用的人越来越少了。
    • 2:作为Java的粉丝C#(Java的模仿者)就不再支持第二种语法格式了。越来越多的语言可能会抛弃第二种格式。
  • 数组初始化概述:

    • Java中的数组必须先初始化,然后才能使用。
    • 所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。
  • 数组的初始化方式

    • 动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。
    • 静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度(用的更多)。
  • 动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。

    • 格式:数据类型[] 数组名 = new 数据类型[数组长度];
    • 数组长度其实就是数组中元素的个数
    • 举例:
      • int[] arr = new int[3];
      • 解释:定义了一个int类型的数组,这个数组中可以存放3个int类型的值。new为数组分配内存空间。

Java中的内存分配

  • Java 程序在运行时,需要在内存中的分配空间。为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
  • 存储局部变量,使用完毕就消失。
  • 存储new出来的东西
  • 方法区 (面向对象部分讲)
  • 本地方法区 (和系统相关)
  • 寄存器 (给CPU使用)

  • 局部变量

    • 在方法定义中或者方法声明上的变量
    • 使用完毕,立即消失
  • 堆:new出来的东西,实体,对象。

    • a:每一个实体都有首地址值
    • b:每一个实体内的数据都有默认值
      • byte,short,int,long: 0
      • float,double: 0.0
      • char: ‘\u0000’
      • boolean: false
      • 引用类型:null
    • c:使用完毕后,会被垃圾回收器空闲的时候回收。

  • 图解数组内存三个数组
  1. /*
  2. 需求:
  3. 1、定义第一个数组,定义完毕后,给数组元素赋值。赋值完毕后,在输出数组名称和元素。
  4. 2、定义第二个数组,定义完毕后,给数组元素赋值。赋值完毕后,在输出数组名称和元素。
  5. 3、定义第三个数组,把第一个数组的地址值给它。(注意类型一致),通过第三个数组的名称去把元素重新赋值。
  6. 4、再次输出第一个数组名称和元素。
  7. */
  8. class ArrayDemo{
  9. public static void main(String[] args){
  10. int[] arr = new int[3];
  11. arr[0] = 100;
  12. arr[1] = 188;
  13. arr[2] = 323;
  14. System.out.println(arr);
  15. System.out.println(arr[0]);
  16. System.out.println(arr[1]);
  17. System.out.println(arr[2]);
  18. int[] arr2 = new int[3];
  19. arr2[0] = 500;
  20. arr2[1] = 388;
  21. arr2[2] = 423;
  22. System.out.println(arr2);
  23. System.out.println(arr2[0]);
  24. System.out.println(arr2[1]);
  25. System.out.println(arr2[2]);
  26. //第三个数组
  27. int[] arr3 = arr;
  28. arr3[0] = 20;
  29. arr3[1] = 200;
  30. System.out.println(arr);
  31. System.out.println(arr[0]);
  32. System.out.println(arr[1]);
  33. System.out.println(arr[2]);
  34. }
  35. }

  • 静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。

    • 格式:

      • 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
    • 举例:
      • int[] arr = new int[]{1,2,3};
      • 解释:定义了一个int类型的数组,这个数组中可以存放3个int类型的值,并且值分别是1,2,3。
    • 简化的写法
      • int[] arr = {1,2,3};
  • 注意:不能同时进行动态初始化和静态初始化。就是不能在给定数组长度的同时给出元素。

数组操作常见的两个小问题

  • 数组索引越界异常

    • ArrayIndexOutOfBoundsException 原因:访问到了数组中的不存在的索引时发生。
  • 空指针异常

    • NullPointerException 原因:数组引用没有指向实体,却在操作实体中的元素时(数组已经不在堆栈内存)。
  • Eg:

  1. int[] arr = {1,2,3};
  2. System.out.println(arr[3]); //报错:ArrayIndexOutOfBoundsException
  3. arr = null;
  4. System.out.println(arr[0]); //报错:NullPointerException

数组练习

  • 数组遍历(依次输出数组中的每一个元素)

    • 数组属性length,可以得到数组长度。
  1. int[] arr2 = {1,4,52,4,5,6,3,2,8,5,3,1,6,7,8,3,2};
  2. //length 属性
  3. for (int x=0;x<arr2.length;x++){
  4. System.out.println(arr2[x]);
  5. }
  • 数组获取最值(获取数组中的最大值最小值)
  1. /*
  2. 分析:
  3. A:从数组中人员找一个作为参照物(一般第一个),默认他是最大的。
  4. B:遍历其他元素,一次获取和参照我进行对比。
  5. */
  6. class ArrayDemo{
  7. public static void main(String[] args){
  8. int[] arr2 = {1,4,52,4,5,6,44,2,66,323,3,22,6,23,8,654,2};
  9. int max = arr2[0];
  10. int min = arr2[0];
  11. for (int x=1;x<arr2.length;x++){
  12. max = (max > arr2[x]) ? max : arr2[x];
  13. min = (min < arr2[x]) ? min : arr2[x];
  14. // System.out.println(arr2[x]);
  15. }
  16. System.out.println("Max is :" +max);
  17. System.out.println("Min is :" +min);
  18. }
  19. }
  • 数组元素逆序 (就是把元素对调)
  1. /*
  2. 分析:
  3. A:将arr[0]与arr[length-1]交换
  4. B:将arr[1]与arr[length-2]交换
  5. ...
  6. C:只要做到arr.length/2即可
  7. */
  8. class ArrayDemo{
  9. public static void main(String[] args){
  10. int[] arr = {1,4,52,4,5,6,44,2,66,323,3,22,6,23,8,654,2};
  11. for(int i=0;i<arr.length;i++){
  12. System.out.print(arr[i]+" ");
  13. }
  14. System.out.println();
  15. arrReverse(arr);
  16. for(int i=0;i<arr.length;i++){
  17. System.out.print(arr[i]+" ");
  18. }
  19. }
  20. public static void arrReverse(int[] arr){
  21. for (int x=0;x<arr.length/2;x++){
  22. int temp = arr[x];
  23. arr[x] = arr[arr.length-1-x];
  24. arr[arr.length-1-x] = temp;
  25. }
  26. }
  27. }
  • 数组查表法(根据键盘录入索引,查找对应星期)
  1. import java.util.Scanner;
  2. class ArrayDemo{
  3. public static void main(String[] args){
  4. String[] strArr = {"星期一","星期二","星期三","星期四","星期五","星期六","星期日"};
  5. Scanner sc = new Scanner(System.in);
  6. System.out.println("Please input a number(0~6):");
  7. int index = sc.nextInt();
  8. System.out.println(strArr[index]);
  9. }
  10. }
  11. * 数组元素查找(查找指定元素第一次在数组中出现的索引)
来自为知笔记(Wiz)

转载于:https://www.cnblogs.com/lutianfei/p/5213654.html

No_16_0224 Java基础学习第五天相关推荐

  1. JAVA基础学习(十五)--集合二--TreeSet和泛型

    一.TreeSet 1.1.TreeSet Set:hashSet:数据结构是哈希表.线程是非同步的. 保证元素唯一性的原理:判断元素的HashCode值是否相同. 如果相同,还会判断元素的equal ...

  2. java基础学习(五)

    一.数组 1.什么是数组? 数组:数组可以存放多个同一类型的数据.数组也是一种数据类型,是引用数据类型.即:数组就是一组数据 double[] hens = {2,3,4,5}: double[] 表 ...

  3. Java基础学习——第十四章 网络编程

    Java基础学习--第十四章 网络编程 一.网络编程概述 计算机网络: 把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大.功能强的网络系统,从而使众多的计算机可以方便地互相传递信 ...

  4. Java基础学习Day09--字符串

    Java基础学习Day09--字符串 一.简介: 二.String类字符串 三.String字符串的存储原理 四.字符串常用方法 1.equals()方法 2.字符串的搜索 3.截取子字符串 4.去除 ...

  5. Java 基础学习-Java语言概述

    Java 基础学习 第一章 Java语言概述 回顾java基础知识,进行整理记录. 文章目录 Java 基础学习 前言 一. Java语言发展史(了解) 二.Java语言跨平台原理(理解) 三.JRE ...

  6. java基础学习 --- 第二节 变量、数据类型和运算符

    java基础学习 - 第二节 变量.数据类型和运算符 一.变量 1.变量就是会发生改变的数据,程序运行时,这些数据以变量的形式被保存到计算机的内存中.如图 2.使用变量的步骤:     声明变量 - ...

  7. java基础学习-4

    Java基础学习-4 static 注意事项 重新认识main方法 继承 小练习 子类到底能继承父类中的哪些内容(第126集)*** 继承过程中成员变量和成员方法的访问特点 小练习 小总结 构造方法的 ...

  8. java基础学习_IO流03_字符流、IO流小结、案例_day21总结

    java基础学习_IO流03_字符流.IO流小结.案例_day21总结 ================================================================ ...

  9. Java基础学习——第六章 面向对象编程(下)

    Java基础学习--第六章 面向对象编程(下) 一.关键词:static 1. static关键字的引入 当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new ...

  10. Java基础学习——第十六章 Java8新特性

    Java基础学习--第十六章 Java8 新特性 Java8(JDK8.0)较 JDK7.0 有很多变化或者说是优化,比如 interface 里可以有静态方法和默认方法,并且可以有方法体,这一点就颠 ...

最新文章

  1. python中星号怎么打出来_Python打印“菱形”星号代码方法
  2. 综述:基于点云的自动驾驶3D目标检测和分类方法
  3. mysql 5.7 收费_MySQL5.7 常用用户操作
  4. python requests下载文件很慢-python requests 下载大文件不完整
  5. 2019 年 Spread.NET 产品路线图(Roadmap)
  6. Android,UI主线程与子线程
  7. dreamweaver 正则表达式为属性值加上双引号_Python正则表达式(一)
  8. embedding_Keras嵌入层
  9. 客户区和非客户区指的什么?窗口客户区和视图客户区的区别(小问题大思想)
  10. dubbo调用超时回滚_微服务痛点基于Dubbo + Seata的分布式事务(AT模式)
  11. xercesimpl做什么用的_一体化泵站是用来做什么的有什么用
  12. .NET简谈自定义事务资源管理器
  13. 多个客户同时连接ServerSocket的简单实现
  14. vmware workstation 12 密钥
  15. FTP客户端-C++
  16. Label mx条码打印软件批量制作ITF-14条码
  17. 武汉大学计算机学院易碧波,王峰(武汉大学计算机学院副教授)_百度百科
  18. 英语词根词缀记忆法(全集)_你竟然还在用词根词缀背单词?智橡树英语教你音标和音节秒记法...
  19. python数据分析岗位做什么_Python数据分析--数据分析岗位最新招聘情况
  20. NBA数据的Echarts 数据分析图表

热门文章

  1. 异常处理与调试 - 零基础入门学习Delphi50
  2. charles抓包https/模拟弱网/设置断点/修改接口请求值或返回值/压测
  3. docker tar 镜像 容器相互转换
  4. MSIL实用指南-struct的生成和操作
  5. Windows 2008 防火墙开放端口
  6. windows命令行快速启动软件
  7. 学习笔记之TCP/IP协议分层与OSI參考模型
  8. js鼠标禁止右键、复制粘贴代码
  9. PHP程序的常见漏洞攻击分析
  10. freebsd安装linux网卡驱动,FreeBSD安装后的网卡配置