java学习笔记(2)——函数
int a = 1;
a = a++;
1,取出a的值1作为a++表达式的值(a++表达式等于1)
2,a增加1变为2
3,执行赋值运算,a++表达式的值再赋给a,a又成为了1.
-----------------------------------------------
package pack01;
public class HexBie {
public static void main(String[] args){
int a = 1;
a = a++;
System.out.println(a);
int b = 1;
a = 1;
b = a++;
System.out.println(b);
a = 1;
for(int i=0;i<1000;i++){
a = a++;
}
System.out.println(a);
}
}
---------
1
1
1
-----------------------------------------------
数组拷贝函数
System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
Arrays.copyOf(int[] original, int newLength) //6.0以后才有
-----------------------------------------------
package pack01;
import java.util.Arrays;
public class HexBie {
public static void main(String[] args){
int[] arr = {1, 2, 3, 4};
int[] arr2 = new int[2];
System.arraycopy(arr, 1,arr2,0, 2);
for(int i:arr2){
System.out.println(i);
}
int[] arr3 = new int[2];
arr3 = Arrays.copyOf(arr, 2);
for(int i:arr3){
System.out.println(i);
}
}
}
-------
2
3
1
2
-----------------------------------------------
数组的扩展问题:
java中数组的大小是固定的,数组对象是不能扩展的,可以利用数组复制的方法实现数组扩展
-----------------------------------------------
package pack01;
import java.util.Arrays;
public class HexBie {
public static void main(String[] args){
String[] arr1 = {"how","old"};
String[] temp = Arrays.copyOf(arr1, 5);
String[] arr2 = temp;
arr2[2] = "are";
arr2[3] = "you";
arr2[4] = "?";
for(String s:arr2){
System.out.print(s+"\t");
}
}
}
----------
how old
are you
?
-----------------------------------------------
package pack01;
import java.util.Arrays;
public class HexBie {
public static void main(String[] args){
char[] arr1 = {'a','b'};
System.out.println(arr1);
//字符数组以字符串的形式输出
System.out.println(Arrays.toString(arr1));
int[] arr2 = {1, 2};
System.out.println(arr2);
//数字数组输出的是数组对象内存地址
System.out.println(Arrays.toString(arr2));
String[] arr3 = {"a","b"};
System.out.println(arr3);
//字符串数组输出的是数组对象的内存地址
System.out.println(Arrays.toString(arr3));
}
}
----------
ab
[a, b]
[I@de6ced
[1, 2]
[Ljava.lang.String;@c17164
[a, b]
-----------------------------------------------
/**
* 统计一个字符在字符串中的所有位置
*/
package pack01;
import java.util.Arrays;
public class HexBie {
public static void main(String[] args){
String str = "统计一个字符在字符串中的所有位置";
int[] arr = countAll(str, '字');
System.out.println(Arrays.toString(arr));
}
private static int[] countAll(String str, char c) {
int arr[]={};
for(int i=0;i<str.length();i++){
char c1 = str.charAt(i);
if(c == c1){
arr = Arrays.copyOf(arr, arr.length+1);
arr[arr.length-1] = i;
}
}
return arr;
}
}
------
[4, 7]
-----------------------------------------------
常见的排序方法:
正排序:由大到小。 反排序:由小到大。
1,冒泡法:
2,选择法:
3,插入法:
----------------------------------------------------
/**
*常用的排序
*/
package pack01;
import java.util.Arrays;
public class HexBie {
public static void main(String[] args){
int[] arr1 = {2,4,9,6,3,7,1,5,8};
int[] arr2 = {2,4,9,6,3,7,1,5,8};
int[] arr3 = {2,4,9,6,3,7,1,5,8};
maoPao(arr1); //冒泡法
xuanZe(arr2); //选择法
chaRu(arr3); //插入法
System.out.println(Arrays.toString(arr1));
System.out.println(Arrays.toString(arr2));
System.out.println(Arrays.toString(arr3));
}
//将要插入的数和前面的比较
private static void chaRu(int[] arr) {
int t,j;
for(int i=0;i<arr.length;i++){
t = arr[i];
for(j=i-1;j>=0&&t<arr[j];j--){
arr[j+1] = arr[j]; //向后移
}
arr[j+1] = t;
}
}
//将最小的选择出来放在前面,依次类推
private static void xuanZe(int[] arr) {
for(int i=0;i<arr.length;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
arr[i] = arr[i] + arr[j];
arr[j] = arr[i] - arr[j];
arr[i] = arr[i] - arr[j];
}
}
}
}
//两个两个交换,就像冒泡泡一样
private static int[] maoPao(int[] arr) {
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr.length-i-1;j++){
if(arr[j+1]<arr[j]){
arr[j+1] = arr[j+1]^arr[j];
arr[j] = arr[j]^arr[j+1];
arr[j+1] = arr[j+1]^arr[j];
}
}
}
return arr;
}
}
----------------
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
----------------------------------------------------
方法的递归调用:
递归调用不断在栈内存中声明变量,所以递归效率较低。
----------------------------------------------------
/**
* n的阶乘
*/
package pack01;
import java.util.Arrays;
public class HexBie {
public static void main(String[] args){
int y = f(4);
System.out.println(y);
}
public static int f(int n){
if(n==0) return 1;
int y = f(n-1)*n;
return y;
}
}
----------------------------------------------------
java学习笔记(2)——函数的更多相关文章
- Java学习笔记——回调函数
转载:http://wangyang0311.iteye.com/blog/368031 一般来说分为以下几步: 声明回调函数的统一接口interface A,包含方法callback(); 在调用类 ...
- Java 学习笔记(3)——函数
之前的几篇文章中,总结了java中的基本语句和基本数据类型等等一系列的最基本的东西,下面就来说说java中的函数部分 函数基础 在C/C++中有普通的全局函数.类成员函数和类的静态函数,而java中所 ...
- 【Java学习笔记】函数的可变参数
package p2; public class ParamterDemo { public static void main(String[] args) { int sum1 = add(4,5) ...
- 【Java学习笔记】函数使用
package aaa; public class aaa { public static int add(int a,int b) { return a+b; } public static voi ...
- Java学习笔记(04)
Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- [java学习笔记]java语言核心----面向对象之this关键字
一.this关键字 体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别:在构造函数中调用其它构造函数 原理: 代表的是当前对象. this就是所在函数 ...
- [java学习笔记]java语言核心----面向对象之构造函数
1.构造函数概念 特点: 函数名与类名相同 不用定义返回值类型 没有具体的返回值 作用: 给对象进行初始化 注意: 默认构造函数 多个构造函数是以重载出现的 一个类中如果 ...
- Java学习笔记:语言基础
Java学习笔记:语言基础 2014-1-31 最近开始学习Java,目的倒不在于想深入的掌握Java开发,而是想了解Java的基本语法,可以阅读Java源代码,从而拓展一些知识面.同时为学习An ...
- Java学习笔记4
Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...
随机推荐
- ArcSDE中空间数据的备份与恢复
在采用文件形式空间数据的时代,空间数据的备份仅仅是操作系统中的文件拷贝.备份和归档的过程:而空间数据的恢复也不过是复制.覆盖的操作:在基于ArcSDE和关系型数据库的空间数据库时代,空间数据的备份更多 ...
- 如何获取已经安装到苹果手机上的App信息
//如何获取已经安装到苹果手机上的App信息? Is it possible to get the information (app icon, app name, app location) abo ...
- php课程 8-29 gd库能够画哪些东西
php课程 8-29 gd库能够画哪些东西 一.总结 一句话总结:文字,点,线,圆,弧线,矩形,各种形状都是可以的,和html5中的canva能画的东西很像,使用也很像,参数怎么记呢,参数完全不用记, ...
- js cookie创建读取删除函数封装
js cookie创建读取删除函数封装 一.总结 都是为了方便操作,这样弄了很方便 1.创建cookie的函数封装的作用:方便设置过期时间expire,方便设置键和值 2.查询cookie的数据封装的 ...
- [Tools] Fix Only Committed Files with Prettier and lint-staged
In this lesson we'll use prettier and lint-staged to run prettier only on files that have been chang ...
- js进阶 11-22/23 js如何实现选项卡
js进阶 11-22/23 js如何实现选项卡 一.总结 一句话总结:通过索引把选项卡头的li标签和选项卡内容的div标签联系在一起,通过控制div标签的display属性可以实现选项卡的选项切换. ...
- thinkphp3.2 图片平均颜色值
public function imgColor($imgUrl) { $imageInfo = getimagesize($imgUrl); //图片类型 $imgType = strtolower ...
- 新版itunes添加铃声
iTunes 铃声制作-图文教程 ① 点选设备iPhone - 勾选手动管理音乐和视频 - 点击应用 注意:因本操作涉及iPhone内音乐和视频,请操作前先对音乐和视频进行相关备份,以免同步后被刷掉造 ...
- 体验ArcGIS9.2的历史库功能
转自原文 体验ArcGIS9.2的历史库功能 ESRI公司于2006年11月9日全球同步发布了历史上重要的软件版本ArcGIS9.2,在该版本中,主要新增了以下四大功能(ESRI田昌莲): 第一大新功 ...
- Java中String推断相等equals与==的差别以及StringBuilder的equals
Java中String类型具有一个equals的方法能够用于推断两种字符串是否相等,可是这样的相等又与运算符==所推断的"相等"有所不同,接下来进行分析,结论由程序进行验证 Str ...