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. lua不同模块调用

    一.起因 由于准备把lua加入的系统中,还需把字符串解析json.下了个json的lua,目前还没有搞定.但是一个lua,调用其他lua文件模块,目前刚刚搞定. 暂作记录. 二. 模块调用测试 1. ...

  2. VC6.0 MFC中WebBrowser控件禁止新窗口弹出的解决办法

    http://blog.csdn.net/gnorth/article/details/7258293 分类: WebBrowser MFC 禁止新窗口2012-02-14 15:25 1787人阅读 ...

  3. VS2010下配置Opencv2.4.3 .

    VS2008下OpenCV的配置过程在OpenCV论坛上写的很详细,具体过程可以见如下链接http://www.opencv.org.cn/index.php/VC_2008_Express%E4%B ...

  4. 50个SQL语句

    一个项目用到的50个SQL语句 转载 说明:下面五十个语句都依照測试数据进行过測试.最好每次仅仅单独执行一个语句. 问题及描写叙述: --1.学生表 Student(Sid,Sname,Sage,Ss ...

  5. client、server端编程

    首先是从main函数开发: int main(itn argc,char* argv[]) { pthread_t thread; int count; int status;         cli ...

  6. iOS开发项目实战——Swift实现ScrollView滚动栏功能

    手机作为一个小屏设备,须要显示的信息往往无法在一个屏幕上显示,此时就须要使用到滚动栏,当然除了像TableView这样能够自带滚动功能的. 假设一个界面上View较多,那就必须要使用到ScrollVi ...

  7. 网易前端微专业,JavaScript程序设计基础篇:数组

    不论什么一种语言数组都是比較重要的,其作为一种基础对象应用非常多,如Java你肯定少不了集合(List,Map)这些.因此本篇主要记录JS的数组使用和经常用法.要点例如以下: 1,数组创建 两种方式: ...

  8. bash - Logical_OR

    转载 https://bash.cyberciti.biz/guide/Logical_OR Logical OR   ← Logical AND Home Logical Not ! → Logic ...

  9. MS SQL Server的STRING_SPLIT和STRING_AGG函数

    在较新版本的SQL中,出现有2个函数,STRING_SPLIT和STRING_AGG,前者是把带有分隔的字符串转换为表,而后者却是把表某一表转换为以某种字符分隔的字符串. 如下面: DECLARE @ ...

  10. [Angular] Wrap a third party lib into service