zoukankan      html  css  js  c++  java
  • java中需要注意的小细节

    很早以前就打算写博客,但是总是因为不知道写什么,或是觉得博客里其他人已经把我要写的整理很好了而迟迟没有动笔,现在决定把自己平时的记录的一些笔记拿出来,希望大神们可以批评指导,并且希望能够帮助一些刚刚入门的程序员们,同时也希望自己在整理温故笔记的同时得到提升。

     

    1.运算符:我们在使用算术运算符时,记得要注意下列事项:

    除法“/”当两边为整数时,取整数部分,舍余数。当其中一边为浮点型时,按正常规则相除。

    “%”为整除取余符号,小数取余没有意义(执行出来显示的余数是小数)。结果符号与被取余符号相同。

    2.++,--运算符参与运算操作时,放在变量前后所执行出的结果不相同,++,--后置则变量原有值参与运算操作,运算操作完成后,变量的值自增1或者自减1 , ++,--前置则变量的值先自增1或者自减1,然后执行运算操作。

     如:

    1 int a = 3;
    2 int b;
    3 int c;
    4 b = a++ + 10;//相当于b=a+10,a=a+1 b为13 a为4
    5 c =  ++a+ 10;//相当于a=a+1,c=a+10  c为15 a为5
    6 System.out.println(a);//输出5
    7 System.out.println(b);//输出13
    8 System.out.println(c);//输出15

    3.传参时基本数据类型和引用数据类型是有区别   

    当调用方法时,如果传入的数值为基本数据类型(包含String类型和包装类),形式参数的改变对实际参数不影响

    1     public static void main(String[] args) throws ParseException {
    2         int num = 3;
    3         add(num);
    4         System.out.println(num);//3
    5     }
    6     public static void add(int num) {
    7         num = 4;
    8         System.out.println(i);//4
    9     }

    当调用方法时,如果传入的数值为引用数据类型(String类型除外),形式参数的改变对实际参数有影响

    1     public static void main(String[] args) throws ParseException {
    2         People people=new People();
    3         addName(people);
    4         System.out.println(people.getName());//bye
    5     }
    6     public static void addName(People people) {
    7         people.setName("bye");
    8     }

    4.局部变量和成员变量区别

    区别一:定义的位置不同

      定义在类中的变量是成员变量

      定义在方法中或者{}语句里面的变量是局部变量

    区别二:在内存中的位置不同

      成员变量存储在堆内存的对象中

      局部变量存储在栈内存的方法中

    区别三:声明周期不同

      成员变量随着对象的出现而出现在堆中,随着对象的消失而从堆中消失

      局部变量随着方法的运行而出现在栈中,随着方法的弹栈而消失

    区别四:初始化不同

      成员变量因为在堆内存中,所有默认的初始化值

      局部变量没有默认的初始化值,必须手动的给其赋值才可以使用。

    5.子类方法覆盖父类方法重写时,必须要保证权限大于等于父类权限。

     1  class Fu(){
     2       void method1(){}
     3       public void method2(){}
     4       public void method3(){}
     5   }
     6   
     7   class Zi() extends Fu{
     8       public void method1{}  //编译运行没问题
     9       void method2(){}      //编译错误
    10       public void method3(){}  //编译运行没问题
    11 } 

    6.在向下转型时容易发生ClassCastException类型转换异常。在转换之前必须做类型判断。

      if(  对象 instanceof 子类){…}

     7.Calendar是日历类,在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量,方便获取。

      Calendar为抽象类,由于语言敏感性,Calendar类在创建对象时并非直接创建,而是通过静态方法创建,将语言敏感内容处理好,再返回子类对象。

      Calendar c = Calendar.getInstance();  //返回当前时间

      其中需要注意的是:①在Calendar类中是以周日作为每周的第一天,而我们中国为周一。②在Calendar类中,月份的表示是以0-11代表我们平时生活中的1-12月。③日期是有大小关系的,时间靠后,时间越大。

     8.自动装箱(byte常量池)

    1 Integer x = 127;
    2 Integer y = 127;
    3 //在jdk1.5自动装箱时,如果数值在byte范围之内(-128~127之间的值),不会新创建对象空间而是使用原来已有的空间。
    4 System.out.println(x==y); //true
    

    9.自动拆箱(包装类和基本数据类型做比较时)

      包装类和基本数据类型做比较时,包装类会自动拆箱为基本数据类型,所以最后比较的是基本数据类型,所以数值相同结果为true。如果两个包装类做比较,数值不在byte范围之内比较的是内存地址。

    1 int i = 11123;
    2 Long l1 = 11123l;
    3 Long l2 = 11123l;
    4 System.out.println(i==l1);//true
    5 System.out.println(l1==l2);//false

      

  • 相关阅读:
    我们应该如何防范黑客的攻击? 有哪些棘手问题?
    德国网络安全公司Avira被收购,估值为1.8亿美元
    物联网会成为黑客攻击的目标,智慧城市如何才安全?
    因新型冠状病毒,笔记本电脑销售增长,人们寻求更好的设备进行远程工作
    从电脑维修工到互联网大佬,他是怎么做到的?解读郭盛华最真实的传奇生涯
    企业防御网络风险保护计划的5个步骤
    加载失败图片加样式
    请求接口无权限
    iview button根据条件 disabled可用或者不可用
    vue跨组件传值
  • 原文地址:https://www.cnblogs.com/sunshineweb/p/7642030.html
Copyright © 2011-2022 走看看