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 ...
随机推荐
- UVA 10340 - All in All 水~
看题传送门 Problem E All in All Input: standard input Output: standard output Time Limit: 2 seconds Memor ...
- java项目中VO和DTO以及Entity,各自是在什么情况下应用的
j2ee中,经常提到几种对象(object),理解他们的含义有助于我们更好的理解面向对象的设计思维. POJO(plain old java object):普通的java对象,有别于特殊的j ...
- 安装使用jupyter(原来的notebook)
1.安装pyzmq 使用pip install pyzmq,安装不成功. 使用easy_install.exe pyzmq.成功安装. 2.安装tornado pip tornado 安装完尚不成功. ...
- jquery修改获取radio的选中项
<input id="txtBeginDate" onclick="$('#divDate').css({'top':$('#txtBeginDate').offs ...
- centos7安装nginx的两种方法
第一种方式:通过yum安装 直接通过 yum install nginx 肯定是不行的,因为yum没有nginx,所以首先把 nginx 的源加入 yum 中 运行下面的命令: 1.将nginx放到y ...
- java基本类型(内置类型)取值范围
例1: public class PrimitiveTypeTest { public static void main(String[] args) { // byte System.out.pri ...
- 走进windows编程的世界-----窗体的注冊及创建
1 窗体注冊和创建 1.1WIN32 窗体程序创建步骤 1.WinMain入口函数的定义 2.WindowProc函数的定义 3.注冊窗体类 RegisterClass.RegisterClass ...
- js进阶 11-1 jquery中的页面内容操作的三个方法
jquery中的页面内容操作的三个方法 一.总结 一句话总结:记三个方法即可.text,html,val.因为这里是方法,所以设置值的是后面方法的参数. 1.jquery中的页面内容操作的三个方法? ...
- <a href='javacript:' title='{$str}'>是什么意思(多看学习视频)
<a href='javacript:' title='{$str}'>是什么意思(多看学习视频) 一.总结 一句话总结: 1.javascript:是什么? 伪协议,后面接javascr ...
- NOIP模拟 赌博游戏 - 概率dp
题意: 最近西雅图的高中校园里流行这样一个游戏. 我们有一个骰子,这个骰子有M个面,分别写着1..M,并且是个公平的骰子,换句话说,一次投掷时每个面朝上的概率是相同的. 游戏的组织者使用这个骰子进行N ...