代码改变世界

【连载】corejava 第三天 Corejava第四天

2014-04-06 11:26  Nicole丶  阅读(170)  评论(0编辑  收藏  举报

Corejava连载第三天


以后尽量以代码的形式展示,都讲一些语法的话我相信大家也不想看的,还不如举一些常见的例子,难懂的例子,深入去理解,让大家不感到烦,而且又能学好。可能有时候有些想法太主观了,大家有什么问题可以提出来,一起讨论讨论,我想这样子才能学得更好。

01 package day03;
02 public class BaseCalculate {
03         public static void main(String[] args) {
04                 //1.switch语句
05                 switch("a"){
06                         case "a": System.out.println("a");;
07                 }//jdk1.7以前 switch条件只能是整数(int,byte,char,short) 表达式
08                 //jdk1.7 switch条件可以是字符串了,但是long类型的还是不行的
09                  
10                 //2.++/--运算符
11                 byte a=1;
12                 a++;
13                 //a=a+1;
14                 //为什么a++可以,但是a=a+1不可以呢?
15                 //a++在底层其实做了一个强制转换,而直接a=a+1,
16                 //在运算的时候a+1返回过来是int类型的,所以不能赋值给byte类型的a
17                  
18                 //3.% 取余
19                 //0对其他数的余数是0
20                 System.out.println(0%4);//输出0
21                 //负数的余数是负数
22                 System.out.println(-5%4);//输出-1,计算方法跟正数一样的
23                  
24                 //4.&& || == !
25                 // 分别是与 、或、是否相等、非
26                 //需要重点指出的是,初学者很容易把== 写成=
27                 //=是赋值,==是判断是否相等
28                  
29                 //5.3元运算符
30                 //(boolean值 或者 boolean 表达式)?0:1;
31                 // 如果括号里是true 那么就返回 0,如果为false返回1;
32                 //举个难点的
33                 int b=true?(false?0:1):2;
34                 //我这个还算简单的,难的 可以套n层,不过你只要找到他最后的那一层,
35                 //一个个往前推,不管多少层都没关系;
36                  
37                  
38                 //知识点先这么多,接下来举几个例子
39                 int i=1;
40                 i=i++;//i为几呢?
41                 System.out.println(i);//1
42                 //i=i++有3个步骤
43                 //1 把i的值赋给i++这个表达式
44                 //2 i=i+1;
45                 //3 把i++这个表达式的值赋给i
46                 //所以 i其实是 先变为2 然后又变为1的
47                 boolean c=false&&false||false&&true;//第二个false还有最后一个true是执行不到的,从左到右
48                 boolean d=true||true&&false||true;//第二个true还有第一个false执行不到
49                 System.out.println(c+" "+d);
50                 //以前一直以为&&优先级比||高,可能是因为学过c吧
51                 //但是 现在来看 他们优先级是一样的
52                 //事实胜于雄辩
53                 //如果&&比||的优先级高 那么 boolean d=true||true&&false||true;的第二个true还有第一个false就不会执行不到
54                 //如果||比&&的优先级高 那么 boolean c=false&&false||false&&true;的第二个false还有最后一个true就不会执行不到
55         }
 
56 }

 

 


Corejava
连载第三天了,白天还要上课,中午要午睡,晚上10点左右回到寝室,然后开始写第二天的连载,很累,但是我会努力的,把每天的连载写的更好,现在连载的部分可能很简单,可能也没太多人关注,不过没关系,我会坚持的,相信连载到io,连载到socket编程那里的话,应该会有人关注的吧,加油,comeon

 

Corejava第四天

package corejava04;

import java.util.Arrays;

public class Corejava04 {
        public static void main(String[] args) {
                //数组
                //声明
                int[] ary1;
                int ary2[];//不建议这么写
               
                //动态初始化
                ary1=new int[4];
                //数组元素是自动初始化的,自动初始化为“零”值
                //什么事“零”值呢?
                // int : 0  float:0.0 char:\u0000 boolean:false Object:null
                //零值 不是说就是0 而是所对应类型的零值
                ary1=new int[]{1,2,3};//直接给元素初始化
                //ary1=new int[3]{1,2,3}; 这里报错了,动态初始化的时候,不能在[]里面写数值
               
                //静态初始化
                int[] ary3={1,2,3};//静态初始化只能在数组声明的时候同时初始化
                //ary3={2,3,4}; 编译错误,因为只能在声明时初始化
                //动态初始化就没这个限制了,你可以先声明 然后再初始化也是可以的,上面的例子已经证明了
               
               
                //java关键字: if public class else while
                //特殊关键字: goto const
                //java中 true false null 不是关键字 是字面量
               
                //当你访问数组元素的时候要注意  不要越界了
                //越界了要发送运行时异常ArrayOutofBoundException
                //这也是初学者很容易范的错误,但是解决起来也相对比较简单
                //你可以输出你取得下标是几,还有你的数组长度是几,对比下,很快能找到解决方法的
               
               
                //数组的复制和动态扩展
                //数组对象的大小是固定的,数组对象是不能扩展的
                //利用数组复制的方法实现数组扩展
                int[] ary4=new int[]{1,2,3,4};
                int[] ary5=new int[10];
                System.arraycopy(ary4, 0, ary5, 0,4 );
               
                //什么叫用数组复制的方法实现数组扩展呢
                //比如 原来的ary4是不是满啦,我现在想再加个元素,肯定加不进去了,那么我要扩展他
                //怎么扩展呢 先建个ary5 长度大一点 再把ary4的元素全部复制到ary5里面,这样就变相的实现了数组的扩展
               
                String[] ary6=new String[]{"1","2"};
                String[] ary7=new String[10];
                System.arraycopy(ary6, 0, ary7, 0,2 );
                System.out.println(ary6[0]==ary7[0]);//true
               
                //这块 我想说明的是什么问题呢, 就是 浅层复制
                //什么叫浅层复制呢
                //就是说 在ary6里的 第一个元素 和ary7的第一个元素其实是同一个元素
                //因为对于对象来说 == 比较的是2个对象所在的地址,相等就代表是同一对象
                //其实 还有一种叫做深层复制,在以后讲io的时候 应该会讲到
                //敬请期待哦 呵呵
               
                ary7=Arrays.copyOf(ary6, ary6.length*2);
                //Arrays.copyOf()这个方法其实和System.arraycopy()这个方法差不多的,不过用起来更方便点
                //所以建议大家都用这种方法

               
                //二维数组
                //int[][] ary8=new int[][1]; 编译出错
                //int[][] ary8=new int[1][];//正确
                //int[][] ary8=new int[1][1];//正确
                //int[][] ary8=new int[][]{};//正确
                //int[][] ary8=new int[][1]{};编译出错
                //int[][] ary8=new int[1][]{};编译出错
                //int[][] ary8=new int[1][1]{};编译出错
               
               
                //这种东西不用记 多用几次  叫我记 我也记不了