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)——函数的更多相关文章

  1. Java学习笔记——回调函数

    转载:http://wangyang0311.iteye.com/blog/368031 一般来说分为以下几步: 声明回调函数的统一接口interface A,包含方法callback(); 在调用类 ...

  2. Java 学习笔记(3)——函数

    之前的几篇文章中,总结了java中的基本语句和基本数据类型等等一系列的最基本的东西,下面就来说说java中的函数部分 函数基础 在C/C++中有普通的全局函数.类成员函数和类的静态函数,而java中所 ...

  3. 【Java学习笔记】函数的可变参数

    package p2; public class ParamterDemo { public static void main(String[] args) { int sum1 = add(4,5) ...

  4. 【Java学习笔记】函数使用

    package aaa; public class aaa { public static int add(int a,int b) { return a+b; } public static voi ...

  5. Java学习笔记(04)

    Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...

  6. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  7. [java学习笔记]java语言核心----面向对象之this关键字

    一.this关键字 体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别:在构造函数中调用其它构造函数 原理:         代表的是当前对象.         this就是所在函数 ...

  8. [java学习笔记]java语言核心----面向对象之构造函数

    1.构造函数概念 特点: 函数名与类名相同 不用定义返回值类型 没有具体的返回值 作用:                给对象进行初始化 注意: 默认构造函数 多个构造函数是以重载出现的 一个类中如果 ...

  9. Java学习笔记:语言基础

    Java学习笔记:语言基础 2014-1-31   最近开始学习Java,目的倒不在于想深入的掌握Java开发,而是想了解Java的基本语法,可以阅读Java源代码,从而拓展一些知识面.同时为学习An ...

  10. Java学习笔记4

    Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...

随机推荐

  1. HDU 1251统计难题 字典树

    字典树的应用. 数据结构第一次课的作业竟然就需要用到树了!!!这不科学啊.赶紧来熟悉一下字典树. 空间开销太大T T #include<cstdio> #include<cstrin ...

  2. SDWebImage使用

    SDWebImage这个类库提供一个UIImageView类别以支持加载来自网络的远程图片.具有缓存管理.异步下载.同一个URL下载次数控制和优化等特征. 将SDWebImage类库添加入工程时,一定 ...

  3. [Nuxt] Display Vuex Data Differently in Each Page of Nuxt and Vue.js

    You often use the same data in different ways across pages. This lesson walks you through setting up ...

  4. 10、bitmap格式分析

    说到图片,位图(Bitmap)当然是最简单的,它Windows显示图片的基本格式,其文件扩展名为*.BMP.在Windows下,任何各式的图片文件(包括视频播放)都要转化为位图个时候才能显示出来,各种 ...

  5. POJ 2387 Til the Cows Come Home (Dijkstra)

    传送门:http://poj.org/problem?id=2387 题目大意: 给定无向图,要求输出从点n到点1的最短路径. 注意有重边,要取最小的. 水题..对于无向图,从1到n和n到1是一样的. ...

  6. 【23.33%】【codeforces 557B】Pasha and Tea

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  7. Linux与Windows 10用grub引导教程

    前言 去年暑假的时候,写了一篇如何装 Linux 和 Windows 10 双系统的文章发在了简书上,我写这篇文章的原因是当初装双系统确实是折腾了许久,网上也找不到一篇详尽的教程.由于去年对于写教程还 ...

  8. libevent源码分析-介绍、安装、使用

    Libevent介绍 安装 样例 Libevent介绍 在include\event2\event.h中有关于Libevent的介绍,这里简单翻译介绍一下: Libevent是以事件为驱动的开发可扩展 ...

  9. C#生成6位随机验证码

    private string VerifyCode() { Random random = new Random(); , ).ToString(); }

  10. 博客搬家啦! -----> http://ronghaopger.github.io/

    新地方: http://ronghaopger.github.io/ 以后这里就不更新了,感谢博客园!