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. 6.1、Android硬件访问服务之框架

    1.通过前面led点亮的例子,其流程如下 Android app(java)(通过loadLibrary)——>C library(C库做如下事情)——>1.JNI_Onload 2.jn ...

  2. iOS开发UI篇--一个侧滑菜单SlidingMenu

    一.简介 侧滑菜单已经成为app一个极常用的设计,不管是事务类,效率类还是生活类app.侧滑菜单因Path 2.0和Facebook为开发者熟知,国内目前也有很多流行app用到了侧滑菜单,比如QQ.网 ...

  3. shiro 静态页面资源不显示 解决方案(转)

    最近做一个ssm+shiro的框架整和 不加shiro之前ssm中css和图片显示正常.加上以后无法显示. 解决方案: shiro有静态资源过滤. 配置资源匿名访问即可 <property na ...

  4. POJ3171 Cleaning Shifts DP,区间覆盖最值

    题目大意.N个区间覆盖[T1,T2]及相应的代价S,求从区间M到E的所有覆盖的最小代价是多少. (1 <= N <= 10,000).(0 <= M <= E <= 86 ...

  5. 借助gdb实现pstack

    pstack.sh: #! /bin/sh if [ -z $1 ] then echo "gdb script for print stack" echo "usage ...

  6. 今天竟然有人模仿我的QQ号进行骗钱

    今天下午,CoderGeek同学告诉我,有个叫"小雷FansUnion"的QQ正在找他要钱,他直接和我这个正宗的"小雷FansUnion"探听虚实.这时才发现, ...

  7. C++中string类的操作函数。

    相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯 ...

  8. Android 自定义RadioButton样式

     上面这种3选1的效果如何做呢?用代码写? 其实有更简单的办法,忘了RadioButton有什么特性了吗? 我就用RadioButton实现了如上效果,其实很简单的. 首先定义一张background ...

  9. 群晖synology的Video Station无法通过浏览器在线播放视频

    群晖synology的Video Station无法通过浏览器在线播放视频 http://www.hangge.com/blog/cache/detail_419.html

  10. L脚本语言实现文件加解密

    L脚本语言中能够对内存对象进行AES加解密.我们能够非常easy地实现文件加解密 #scp #定义一个秘钥字符串 定义:字符串,str1,abcdefg 打开:文件,file1,c:\1.txt 打开 ...