Java学习笔记(5)
补day4:如果一个函数的返回值类型是具体的数据类型,那么该函数就必须要保证在任意情况下都保证有返回值。(除了void类型)
return关键字的作用:
1.返回数据给函数的调用者
2.函数一旦执行到了return关键字,那么该函数马上结束。(能结束一个函数) return;
注意:一个函数的返回值类型是void,那么也可以出现return关键字,但是return关键字的后面不能有数据。
break关键字与return关键字的区别:
1.break关键字是结束一个循环
2.return关键字是结束一个函数
函数的重载:
在一个类中出现两个或者两个以上的同名函数,这个称作为函数的重载。
函数重载的作用:同一个函数名可以出现了不同的函数,以应对不同个数或者不同数据类型的参数。
函数重载的要求:
1.函数名一致
2.形参列表不一致(形式参数的个数或者是对应的数据类型不一致)
3.与函数的返回值类型是无关的
(要不就是重复定义)
数组:数组是同一种数据类型数据的集合容器。
数组的定义格式:
数据类型【】 变量名=new 数据类型【长度】;
局部变量:如果一个变量是在一个方法(函数)的内部声明的,那么该变量就是一个局部变量。
成员变量:成员变量就是定义在方法之外,类之内的。
栈内存:栈内存存储的都是局部变量,变量一旦出了自己的作用域,那么马上会从内存中消失,释放内存空间。
堆内存:堆内存存储的都是对象数据,对象一旦被使用完,并不会马上从内存中消失,而是等待垃圾回收器不定时把垃圾对象回收,这时候该对象才会消失,释放内存。
对象如果没有变量引用了,那么该对象就是一个垃圾对象了。
凡是以new关键字创建的对象,jvm都会在堆内存中开辟一个新的空间,创建一个新的对象。
数组的好处,对分配到数组对象中的每一个数据都分配一个编号(索引值,角标,下标),索引值的范围从0开始,到n-1
数组中最常见的问题:
1.NullPointerException 空指针异常
原因:引用类型变量没有指向任何对象,而访问了对象的属性或者是调用了对象的方法。
2.ArrayIndexOutOfBoundsException 索引值越界。
原因:访问了不存在的索引值。
数组的初始化方式:
数据类型【】 变量名=new 数据类型【长度】; //动态初始化
数据类型【】 变量名={元素1,元素2,元素3....}; //静态初始化
排序:
选择排序:
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] a= {18,12,6,8,9};
selectSort(a);
}
public static void selectSort(int[] arr) {
for (int i=0;i<arr.length-1;i++) {
for (int j=i+1;j<arr.length;j++) {
if (arr[j]>arr[i]) {
int temp=arr[j];
arr[j]=arr[i];
arr[i]=temp;
}
}
}
System.out.println("目前的元素是:");
for (int i=0;i<arr.length ;i++) {
System.out.print(arr[i]+",");
}
}
冒泡排序:
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] a= {18,12,6,8,9};
bubbleSort(a);
}
public static void bubbleSort(int[] arr) {
for(int i=0;i<arr.length-1;i++) {
for (int j=0;j<arr.length-1-i;j++) {
if (arr[j]>arr[j+1]) {
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}}
System.out.println("目前的元素是:");
for (int i=0;i<arr.length ;i++) {
System.out.print(arr[i]+",");
}
}
查找:折半查找法
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] a= {12,16,54,56,70};
int index=halfSearch(a,156);
System.out.println("元素的索引值为:"+index);
}public static int halfSearch(int[] arr,int target) {
int max=arr.length-1;
int min=0;
int mid=(max+min)/2;
while (true) {
if (target>arr[mid])
min=mid+1;
else if (target<arr[mid])
max=mid-1;
else
return mid;
//没有找到
if (max<min)
return -1;
mid=(max+min)/2;
}}
Arrays.sort();排序
Arrays.toString();输出
Arrays.binarySearch();折半查找法
二维数组的初始化方式:
数据类型【】【】 变量名=new 数据类型【长度1】【长度2】;
静态初始化:
数据类型【】【】 变量名={{元素1,元素2,元素3...},{元素1,元素2,元素3...},{元素1,元素2,元素3...}...}
数组的特点:
1.数组只能存储同一种数据类型的数据
2.数组是会给存储到数组中的元素分配一个索引值的,索引值从0开始,最大的索引值是length-1
3.数组一旦初始化,长度固定
4.数组中的元素与元素之间的内存地址是连续的,注意,是数组中的相邻元素的地址,而不是数组本身的地址
Java学习笔记(5)的更多相关文章
- 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁
什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...
- 0035 Java学习笔记-注解
什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...
- Java学习笔记(04)
Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...
- 0032 Java学习笔记-类加载机制-初步
JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...
- 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用
垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...
- 0028 Java学习笔记-面向对象-Lambda表达式
匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...
- 0025 Java学习笔记-面向对象-final修饰符、不可变类
final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- Java学习笔记-多线程-创建线程的方式
创建线程 创建线程的方式: 继承java.lang.Thread 实现java.lang.Runnable接口 所有的线程对象都是Thead及其子类的实例 每个线程完成一定的任务,其实就是一段顺序执行 ...
- 0013 Java学习笔记-面向对象-static、静态变量、静态方法、静态块、单例类
static可以修饰哪些成员 成员变量---可以修饰 构造方法---不可以 方法---可以修饰 初始化块---可以修饰 内部类(包括接口.枚举)---可以修饰 总的来说:静态成员不能访问非静态成员 静 ...
随机推荐
- swagger学习2
转:http://blog.csdn.net/fansunion/article/details/51923720 写的非常好,非常详细,推荐!!!! 最常用的5个注解 @Api:修饰整个类,描述Co ...
- 修改centos的源
最近都在使用国内的VPS.系统统一使用的都是Linux系统.但是,有一些服务商的系统给默认设置的是国外的.这样就会导致下载速度缓慢.于是,找到了国内几家比较热门的镜像点.奉献给大家.下面的镜像全部支持 ...
- 桥接物理网卡,pipwork指定ip,外网连接,研究salt+docker
1.桥接物理网卡: 首先下载工具: yum -y install --enablerepo=epel bridge-utils 停止服务: 983 systemctl stop docker 删除do ...
- lnmp重置mysql数据库root密码
第一种方法:用军哥的一键修改LNMP环境下MYSQL数据库密码脚本 一键脚本肯定是非常方便.具体执行以下命令: wget http://soft.vpser.net/lnmp/ext/reset_my ...
- demo 集合
github: https://github.com/zhanghaifeng1234565/ProjectFunctionCollect https://github.com/XY-W ...
- 代码管理工具 (含git、npm、gulp)
1 Git 分布式代码管理工具(基于Linux,可在本地进行提交)代码同时储存在本地和服务器中 ① Git基本操作命令 (1)初始化,创建初始化仓库 git init ------- 文件初始化,初始 ...
- Activiti工作流引擎核心介绍
引言 Activiti 作为一个遵从 Apache 许可的工作流和业务流程管理开源平台,其核心是基于 Java 的超快速.超稳定的 BPMN 2.0 流程引擎,强调流程服务的可嵌入性和可扩展性,同时更 ...
- MyBatis+Spring实现基本CRUD操作
一.MyBaits介绍 MyBatis 是一个可以自定义SQL.存储过程和高级映射的持久层框架.MyBatis 摒除了大部分的JDBC代码.手工设置参数和结果集重获.MyBatis 只使用简单的X ...
- 【BZOJ2738】矩阵乘法 [整体二分][树状数组]
矩阵乘法 Time Limit: 20 Sec Memory Limit: 256 MB[Submit][Status][Discuss] Description 给你一个N*N的矩阵,不用算矩阵乘 ...
- 【BZOJ2460】【BJOI2011】元素 [线性基]
元素 Time Limit: 20 Sec Memory Limit: 128 MB[Submit][Status][Discuss] Description 相传,在远古时期,位于西方大陆的 Ma ...