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可以修饰哪些成员 成员变量---可以修饰 构造方法---不可以 方法---可以修饰 初始化块---可以修饰 内部类(包括接口.枚举)---可以修饰 总的来说:静态成员不能访问非静态成员 静 ...
随机推荐
- codeforces 1065D
题目链接:https://codeforces.com/problemset/problem/1065/D 题意:给你一个又1~n^2组成的n行n列的矩阵,你可以走日字型,直线,斜线,现在要求你从1走 ...
- python构建一个项目
二.实验步骤 2.1 实验准备 我们的实验项目名为 factorial. $ mkdir factorial $ cd factorial/ 2.2 主代码 我们给将要创建的 Python 模块取名为 ...
- HTML5之SVG详解(一):基本概括
转载自:http://www.cnblogs.com/hupeng/archive/2012/12/21/2828456.html 1.背景 SVG是Scalable Vector Graphics的 ...
- 设计模式开篇综述(Java)
设计原则是规范,设计模式是技巧.如果在项目中能够灵活运用这些基础知识,那么我相信一定会得到意想不到的收获. 接下来的时间里,我将继续学习设计模式,将对每一个设计模式从以下几点进行分析和学习,如有不妥当 ...
- elemetUi 组件--el-upload
[需求]实现上传Excel文件,在上传到服务器时,还要附加一个参数,在请求上传文件接口前,先要进行文件格式判断. [知识点] 1.el-upload 官方文档中,主要用到了以下属性: data 可选参 ...
- 修改nginx对http请求数据大小限制
1. 问题发现 在公司搭建了一个基于mindoc的wiki知识库,用nginx做的反向代理服务器,同事在使用过程中上传某个文件一直失败,于是看着看下mindoc自己的日志文件,发现都是类似于fastd ...
- SCC模板
vector<int> G[maxn]; int pre[maxn], low[maxn], c[maxn]; int n, m; stack<int> s; int dfst ...
- 【BZOJ1857】【SCOI2010】传送带 [三分]
传送带 Time Limit: 1 Sec Memory Limit: 64 MB[Submit][Status][Discuss] Description 在一个2维平面上有两条传送带,每一条传送 ...
- HIT 1917 2—SAT
题目大意:一国有n个党派,每个党派在议会中都有2个代表, 现要组建和平委员会,要从每个党派在议会的代表中选出1人,一共n人组成和平委员会. 已知有一些代表之间存在仇恨,也就是说他们不能同时被选为和平委 ...
- 【洛谷 P1437】 [HNOI2004]敲砖块 (DP)
题目链接 毒瘤DP题 因为\((i,j)\)能不能敲取决于\((i-1,j)\)和\((i-1,j+1)\),所以一行一行地转移显然是有后效性的. 于是考虑从列入手.我们把这个三角形"左对齐 ...