zoukankan      html  css  js  c++  java
  • Java语言基础(回头复习)

    /*
        使用变量的时候要注意的问题:
            A:作用域
                变量定义在哪个大括号内,它就在这个大括号内有效。
                并且,在同一个大括号内不能同时定义同名的变量。
                
            B:初始化值
                没有初始化值的变量不能直接使用。
                你只要在使用前给值就行,不一定非要在定义的时候立即给值。
                推荐在定义的时候给值。
                
                定义变量的格式:
                    a:数据类型 变量名 = 初始化值;
                    b:数据类型 变量名;
                      变量名 = 初始化值;
            
            C:在一行上建议只定义一个变量
                可以定义多个,但是不建议
    */
    public class Text2 {
        public static void main(String[] args) {
            //定义变量
            int x = 100;
            
            //错误,不能有同名的
            //int x = 200;
            
            //定义变量必须给值
            //int y;
            //System.out.println(y);
            
            int z;
            z = 100;
            System.out.println(z);
            
            //在一行上定义多个变量
            //int a = 10; int b = 20; int c  = 30;
            //上面的写法可以,但是不建议。
            int a = 10; 
            int b = 20; 
            int c  = 30;
            
            //int d, e;
            //d = 40;
            //e = 50;
            
            //int f,int g; //错误
            //int h; int i; //正确
        }
    }
    /*
        +是一个运算符(我们等会讲解)。做加法运算的。
        
        一般来说,我们在运算的时候,要求参与运算的数据类型必须一致。
        
        注意:
            boolean类型不能转换为其他的数据类型
    
        默认转换(从小到大的转换)
            A:byte,short,char—int—long—float—double
            B:byte,short,char相互之间不转换,他们参与运算首先转换为int类型
    */
    public class Text {
        public static void main(String[] args) {
            //直接输出的方式做加法
            //System.out.println(3 + 4);
        
            //两个int类型做加法
            int x = 3;
            int y = 4;
            int z = x + y;
            System.out.println(z);
            
            //定义一个byte类型,一个int类型,做加法,他们参与运算首先转换为int类型
            byte a = 3;
            int b = 4;
            System.out.println(a + b);
            
            //可能损失精度
            //byte c =  a + b;,因为 b 为int整数型,从int到byte精度可能会降低,所以此处出错
            int c = a + b;
            System.out.println(c);
        }
    }
    /*
        强制转换:
            从大的数据类型到小的数据类型。
            
            格式:
                目标数据类型 变量 = (目标数据类型) (被转换的数据);
                
            注意:
                不要随意的去使用强制转换,因为它隐含了精度损失问题。
    */
    public class Text {
        public static void main(String[] args) {
            byte a = 3;
            int b = 4;
            
            //int c = a + b;这个肯定没有问题
    
            //byte c = a + b; 这个是有问题的
            
            //用强制类型转换改进
            byte c = (byte) (a + b);
            System.out.println(c);
        }
    }
    /*
        思考题1:请问下面这个有没有问题
            double d = 12.345;
            float f = d;
            
        思考题2:看看下面两个定义有没有区别呢?
            float f1 = (float)12.345;
            float f2 = 12.345f;
    
            
        解析:f1其实是通过一个double类型转换过来的。
            而f2本身就是一个float类型。
    */
    public class Text {
        public static void main(String[] args) {
            //把double赋值给float,加了强制类型转换
            double d = 12.345;
            float f = (float)d;
        }
    }
    /*
        面试题:
            byte b1=3,b2=4,b;
            b=b1+b2;
            b=3+4;
            哪句是编译失败的呢?为什么呢?
            解析:b = b1 + b2;  这个是有问题的。
            因为变量相加,会首先看类型问题,最终把结果赋值的也会考虑类型问题。
            常量相加,首先做加法,然后看结果是否在赋值的数据类型范围内,如果不是,才报错。
    */
    public class Text {
        public static void main(String[] args) {
            //定义了三个byte类型的变量,b1,b2,b
            //b1的值是3,b2的值是4,b没有值
            byte b1 = 3,b2 = 4,b;
            
            //b = b1 + b2; //这个是类型提升,所有有问题
            
            b = 3 + 4; //常量,先把结果计算出来,然后看是否在byte的范围内,如果在就不报错。
        }
    }
    /*
        byte b = 130;有没有问题?如果我想让赋值正确,可以怎么做?结果是多少呢?
        
        练习:byte b = (byte)300;
    */
    public class Text {
        public static void main(String[] args) {
            //因为byte的范围是:-128到127。
            //而130不在此范围内,所以报错。
            //byte b = 130; 
            
            //我们可以使用强制类型转换
            byte b = (byte) 130;
            
            //结果是多少呢?
            System.out.println(b);
        }
    }
    /*
        分析过程:
            我们要想知道结果是什么,就应该知道是如何进行计算的。
            而我们又知道计算机中数据的运算都是补码进行的。
            而要得到补码,首先要计算出数据的二进制。
            
            A:获取130这个数据的二进制。
                00000000 00000000 00000000 10000010
                这是130的原码,也是反码,还是补码。
            B:做截取操作,截成byte类型的了。
                10000010 
                这个结果是补码。
            C:已知补码求原码。
                        符号位        数值位
                补码:    1            0000010
                
                反码:    1            0000001
                
                原码:    1            1111110
    */

    /*
        看程序写结果
        
        通过字符和一个整数相加,我们要知道ASCII码表。
            通过看完这张表以后,我们要记住三个值:
                'a'        97
                'A'        65
                '0'        48
    */
    public class Text {
        public static void main(String[] args) {
            //直接输出一个字符
            System.out.println('a'); //输出结果为  a
            //输出一个字符和一个整数做加法
            System.out.println('a'+1); //输出结果为 98
        }
    }
  • 相关阅读:
    POJ 3126 Prime Path
    POJ 2429 GCD & LCM Inverse
    POJ 2395 Out of Hay
    【Codeforces 105D】 Bag of mice
    【POJ 3071】 Football
    【POJ 2096】 Collecting Bugs
    【CQOI 2009】 余数之和
    【Codeforces 258E】 Devu and Flowers
    【SDOI 2010】 古代猪文
    【BZOJ 2982】 combination
  • 原文地址:https://www.cnblogs.com/sutao/p/7172111.html
Copyright © 2011-2022 走看看