一月十九日星期一

今天看研究了下java的参数调用问题,花费了好长时间.有时候简单的问题不是想想就当自己懂了的,还是得通过demo来验证.晚上看完了corejava上讲继承的章节,明天敲几个demo巩固巩固.最近在用一款doit.im的任务管理app,前一天晚上或者一早起来安排一下一天的任务,晚上检查完成情况.

/*
 * java中的参数传递:按值调用.基本类型传递数值,引用类型传递地址值
 * 方法参数使用情况:
 *     一个方法不能修改一个基本数据类型的参数,int change
 *     一个方法可以改变一个对象参数的状态,buffer change
 *     一个方法不能让对象参数引用一个新的对象,buffer swap
 */
public class CallbyTest {
    public static void main(String[] args) {
        int x = 2;
        int y = 3;
        System.out.println("before:  " + x + "......." + y);
        change(x, y);//
        System.out.println("after:   " + x + "......." + y);
        System.out.println("---------------------------------------");
        String s1 = "aaa";
        String s2 = "bbb";
        System.out.println("before:  " + s1 + "......." + s2);
        change(s1, s2);// String类是不可变的,只是改变了参数引用,而没有改变参数对象的状态
//        swap(s1,s2);
        System.out.println("after:   " + s1 + "......." + s2);// 虽然传递的是地址值,change方法里b的引用改变了
        System.out.println("---------------------------------------");
        // String s11 = new String("aaa");//这段表明了String类无论哪种定义方式传递的仍为地址值
        // String s22 = new String("aaa");//new方式传递String对象地址值
        // String s11 = "aaa";//""方式传递字符串常量地址值
        // String s22 = "bbb";
        // System.out.println("before:  " + s11 + "......." + s22);
        // swap(s11, s22);
        // System.out.println("after:   " + s11 + "......." + s22);
        // System.out.println("---------------------------------------");
        StringBuffer sb1 = new StringBuffer("aaa");
        StringBuffer sb2 = new StringBuffer("bbb");
        System.out.println("before:  " + sb1 + "......." + sb2);
        change(sb1, sb2);// 引用值传递,改变了引用对象的状态
        System.out.println("after:   " + sb1 + "......." + sb2);
        System.out.println("---------------------------------------");
        StringBuffer sb3 = new StringBuffer("aaa");
        StringBuffer sb4 = new StringBuffer("bbb");
        System.out.println("before:  " + sb3 + "......." + sb4);
        swap(sb3, sb4);// 获得两个对象引用的拷贝,该方法交换的也是这两个对象的拷贝.
        System.out.println("after:   " + sb3 + "......." + sb4);
    }

    public static void change(int a, int b) {
        a = b;
        b = b + 3;
        System.out.println("int change a:" + a + ‘\t‘ + "int change b:" + b);
    }

    public static void change(String a, String b) {
        a = b;// 字符串变量引用字符串常量"bbb"的地址值
        b = a + b;// String类不可更改,创建新的字符串常量"bbbbbb",并将其地址值赋给字符串变量b
        System.out.println("string change a:" + a + ‘\t‘ + "string change b:"
                + b);// 这里a仍为"bbb"证明了引用的是字符串常量
    }

    public static void change(StringBuffer a, StringBuffer b) {
        a = b;// 按值传递
        System.out.println("before append b:   " + a);// 此时b未改变
        b.append(a);// b引用的对象状态放生改变
        System.out.println("buffer change a:" + a + ‘\t‘ + "buffer change b:"
                + b);// b改变了,a引用的b地址值,故这里显示a为b改变后的
    }

    public static void swap(StringBuffer a, StringBuffer b) {
        StringBuffer temp = null;
        temp = a;
        a = b;
        b = temp;
        System.out.println("buffer swap a:" + a + ‘\t‘ + "buffer swap b:" + b);
    }

    public static void swap(String a, String b) {
        String temp = null;
        temp = a;
        a = b;
        b = temp;
        System.out.println("string swap a:" + a + ‘\t‘ + "string swap b:" + b);
    }
}
时间: 2024-12-26 13:38:03

一月十九日星期一的相关文章

浅谈“be practical and realistic”

一 “实事求是”这个词,一般认为是古人的一种治学观念,后来经咏芝的发明.阐释.以及“应用”,成为“基本思想路线”(具体可参看大学思想政治教科书),被称为“活的灵魂”.这里不想过多地牵扯政治话题,仅就我这几个月的一些阅读.理解和思考,对于“实事求是”及其所代表的实践观,认识论,以及处事思想,作一些初步的,浅薄的讨论.另外,对于这四个字的翻译,历来无甚定论.这里采用“be practical and realistic”这个说法,转译过来, 就是“要注重实践,要贴合现实”.还有类似“seek tru

C# DateTime 日期加1天 减一天 加一月 减一月 等方法(转)

//今天 DateTime.Now.Date.ToShortDateString(); //昨天,就是今天的日期减一 DateTime.Now.AddDays(-1).ToShortDateString(); //明天,同理,加一 DateTime.Now.AddDays(1).ToShortDateString(); //本周(要知道本周的第一天就得先知道今天是星期几,从而得知本周的第一天就是几天前的那一天,要注意的是这里的每一周是从周日始至周六止 DateTime.Now.AddDays(C

判断用户选择的日期是否为星期一

在平台中如何判断用户选择的日期是否为星期一?实现代码如下图所示: 原文地址:http://bbs.delit.cn/thread-888-1-1.html 转载请注明出处: 撰写人:度量科技http://www.delit.cn

java获取当前日期的前一天,前一月和前一年

核心:使用Calendar的add(int field, int amount)方法 Calendar ca = Calendar.getInstance();//得到一个Calendar的实例 ca.setTime(new Date()); //设置时间为当前时间 ca.add(Calendar.YEAR, -1); //年份减1 Date lastMonth = ca.getTime(); //结果 //求前一月ca.add(Calendar.MONTH, -1), //前一天ca.add(

mysql查询今天、昨天、7天、近30天、本月、上一月 数据

今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1 7天 SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名) 近30天 SELECT * FROM 表名 where DATE_SUB(CURDATE()

《那一天,那一月,那一年,那一世》-------仓央嘉措

那一天, 我闭目在经殿的香雾中, 蓦然听见你颂经中的真言: 那一月, 我摇动所有的经筒, 不为超度, 只为触摸你的指尖: 那一年, 磕长头匍匐在山路, 不为觐见, 只为贴着你的温暖: 那一世, 转山转水转佛塔, 不为修来世, 只为途中与你相见. 那一月, 我轻转过所有经筒, 不为超度,    只为触摸你的指纹: 那一年,    我磕长头拥抱尘埃, 不为朝佛,    只为贴着你的温暖: 那一世,    我翻遍十万大山, 不为修来世,    只为路中能与你相遇: 只是,    就在那一夜,    我

C# DateTime 日期加1天 减一天 加一月 减一月 等方法

http://www.cnblogs.com/dekevin/p/4551843.html //今天 DateTime.Now.Date.ToShortDateString(); //昨天,就是今天的日期减一 DateTime.Now.AddDays(-1).ToShortDateString(); //明天,同理,加一 DateTime.Now.AddDays(1).ToShortDateString(); //本周(要知道本周的第一天就得先知道今天是星期几,从而得知本周的第一天就是几天前的那

1900年为星期一,任意一天求星期几。

#include<stdio.h> int main() { int year,month,day,sum1,sum2,sum3,sum,i,year1; printf("请输入今天的日期,格式1900-1-1.\n"); scanf("%d-%d-%d",&year,&month,&day); year1=year; /*变量重复性使用,考虑是否为初始值,尽量不要让一个变量在连续的操作下使用.*/ if(year<1900

MySQL查询昨天、今天、7天、近30天、本月、上一月数据

在开发或者统计时,我们可能需要统计某个表的数据.比如:查看今天新增的文章.计算本月新增的用户数等.这种类似的需求会有很多,也会很常见,可以使用sql的技巧来完成这些工作.我把用到的一些sql语句做了总结,希望能够给大家提供一些帮助,同时也欢迎大家评论或者留言补充. #=============================================== #昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1