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. UVA 10340 - All in All 水~

    看题传送门 Problem E All in All Input: standard input Output: standard output Time Limit: 2 seconds Memor ...

  2. java项目中VO和DTO以及Entity,各自是在什么情况下应用的

    j2ee中,经常提到几种对象(object),理解他们的含义有助于我们更好的理解面向对象的设计思维.     POJO(plain old java object):普通的java对象,有别于特殊的j ...

  3. 安装使用jupyter(原来的notebook)

    1.安装pyzmq 使用pip install pyzmq,安装不成功. 使用easy_install.exe pyzmq.成功安装. 2.安装tornado pip tornado 安装完尚不成功. ...

  4. jquery修改获取radio的选中项

    <input id="txtBeginDate" onclick="$('#divDate').css({'top':$('#txtBeginDate').offs ...

  5. centos7安装nginx的两种方法

    第一种方式:通过yum安装 直接通过 yum install nginx 肯定是不行的,因为yum没有nginx,所以首先把 nginx 的源加入 yum 中 运行下面的命令: 1.将nginx放到y ...

  6. java基本类型(内置类型)取值范围

    例1: public class PrimitiveTypeTest { public static void main(String[] args) { // byte System.out.pri ...

  7. 走进windows编程的世界-----窗体的注冊及创建

    1   窗体注冊和创建 1.1WIN32 窗体程序创建步骤 1.WinMain入口函数的定义 2.WindowProc函数的定义 3.注冊窗体类 RegisterClass.RegisterClass ...

  8. js进阶 11-1 jquery中的页面内容操作的三个方法

    jquery中的页面内容操作的三个方法 一.总结 一句话总结:记三个方法即可.text,html,val.因为这里是方法,所以设置值的是后面方法的参数. 1.jquery中的页面内容操作的三个方法? ...

  9. <a href='javacript:' title='{$str}'>是什么意思(多看学习视频)

    <a href='javacript:' title='{$str}'>是什么意思(多看学习视频) 一.总结 一句话总结: 1.javascript:是什么? 伪协议,后面接javascr ...

  10. NOIP模拟 赌博游戏 - 概率dp

    题意: 最近西雅图的高中校园里流行这样一个游戏. 我们有一个骰子,这个骰子有M个面,分别写着1..M,并且是个公平的骰子,换句话说,一次投掷时每个面朝上的概率是相同的. 游戏的组织者使用这个骰子进行N ...