java中需要注意的小细节
很早以前就打算写博客,但是总是因为不知道写什么,或是觉得博客里其他人已经把我要写的整理很好了而迟迟没有动笔,现在决定把自己平时的记录的一些笔记拿出来,希望大神们可以批评指导,并且希望能够帮助一些刚刚入门的程序员们,同时也希望自己在整理温故笔记的同时得到提升。
1.运算符:我们在使用算术运算符时,记得要注意下列事项:
除法“/”当两边为整数时,取整数部分,舍余数。当其中一边为浮点型时,按正常规则相除。
“%”为整除取余符号,小数取余没有意义(执行出来显示的余数是小数)。结果符号与被取余符号相同。
2.++,--运算符参与运算操作时,放在变量前后所执行出的结果不相同,++,--后置则变量原有值参与运算操作,运算操作完成后,变量的值自增1或者自减1 , ++,--前置则变量的值先自增1或者自减1,然后执行运算操作。
如:
int a = 3;
int b;
int c;
b = a++ + 10;//相当于b=a+10,a=a+1 b为13 a为4
c = ++a+ 10;//相当于a=a+1,c=a+10 c为15 a为5
System.out.println(a);//输出5
System.out.println(b);//输出13
System.out.println(c);//输出15
3.传参时基本数据类型和引用数据类型是有区别
当调用方法时,如果传入的数值为基本数据类型(包含String类型和包装类),形式参数的改变对实际参数不影响
public static void main(String[] args) throws ParseException {
int num = 3;
add(num);
System.out.println(num);//
}
public static void add(int num) {
num = 4;
System.out.println(i);//
}
当调用方法时,如果传入的数值为引用数据类型(String类型除外),形式参数的改变对实际参数有影响
public static void main(String[] args) throws ParseException {
People people=new People();
addName(people);
System.out.println(people.getName());//bye
}
public static void addName(People people) {
people.setName("bye");
}
4.局部变量和成员变量区别
区别一:定义的位置不同
定义在类中的变量是成员变量
定义在方法中或者{}语句里面的变量是局部变量
区别二:在内存中的位置不同
成员变量存储在堆内存的对象中
局部变量存储在栈内存的方法中
区别三:声明周期不同
成员变量随着对象的出现而出现在堆中,随着对象的消失而从堆中消失
局部变量随着方法的运行而出现在栈中,随着方法的弹栈而消失
区别四:初始化不同
成员变量因为在堆内存中,所有默认的初始化值
局部变量没有默认的初始化值,必须手动的给其赋值才可以使用。
5.子类方法覆盖父类方法重写时,必须要保证权限大于等于父类权限。
class Fu(){
void method1(){}
public void method2(){}
public void method3(){}
}
class Zi() extends Fu{
public void method1{} //编译运行没问题
void method2(){} //编译错误
public void method3(){} //编译运行没问题
}
6.在向下转型时容易发生ClassCastException类型转换异常。在转换之前必须做类型判断。
if( 对象 instanceof 子类){…}
7.Calendar是日历类,在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量,方便获取。
Calendar为抽象类,由于语言敏感性,Calendar类在创建对象时并非直接创建,而是通过静态方法创建,将语言敏感内容处理好,再返回子类对象。
Calendar c = Calendar.getInstance(); //返回当前时间
其中需要注意的是:①在Calendar类中是以周日作为每周的第一天,而我们中国为周一。②在Calendar类中,月份的表示是以0-11代表我们平时生活中的1-12月。③日期是有大小关系的,时间靠后,时间越大。
8.自动装箱(byte常量池)
Integer x = 127;
Integer y = 127;
//在jdk1.5自动装箱时,如果数值在byte范围之内(-128~127之间的值),不会新创建对象空间而是使用原来已有的空间。
System.out.println(x==y); //true
9.自动拆箱(包装类和基本数据类型做比较时)
包装类和基本数据类型做比较时,包装类会自动拆箱为基本数据类型,所以最后比较的是基本数据类型,所以数值相同结果为true。如果两个包装类做比较,数值不在byte范围之内比较的是内存地址。
int i = 11123;
Long l1 = 11123l;
Long l2 = 11123l;
System.out.println(i==l1);//true
System.out.println(l1==l2);//false
java中需要注意的小细节的更多相关文章
- 在JAVA中记录日志的十个小建议
JAVA日志管理既是一门科学,又是一门艺术.科学的部分是指了解写日志的工具以及其API,而选择日志的格式,消息的格式,日志记录的内容,哪种消息对应于哪一种日志级别,则完全是基于经验.从过去的实践证明, ...
- eclipse下java中凝视字体太小和xml中中文字体太小问题解决方法
我们在win7下进行android应用开发.须要搭建对应的开发环境.如今普遍基本上都是eclipse+adt+sdk,在本人搭建完环境后,发现eclipse下.java中的凝视和xml中的中文字体变得 ...
- JAVA项目复习的一些小细节
使用javadoc完成自动文档,这一段将在后期进行介绍. 类,方法和变量的作用域. 使用修饰符public和修饰符private,对于类和方法来说并没有什么不妥的,但是变量使用public却在某些时刻 ...
- Java中容易遗漏的小知识点( 一 )(为了和小白一样马上要考试的兄弟准备的,希望小白和大家高过不挂)
笔者csdn博客同文地址:https://blog.csdn.net/weixin_45791445/article/details/106597515 我是小康小白,一个平平无奇的Java小白.热爱 ...
- 用var声明变量,在java中居然有这么多细节,你都了解么?
简介 Java SE 10引入了局部变量的类型推断.早先,所有的局部变量声明都要在左侧声明明确类型. 使用类型推断,一些显式类型可以替换为具有初始化值的局部变量保留类型var,这种作为局部变量类型 的 ...
- java中MD5加密的小使用
最近项目中需要用到md5加密,就自己在网上看了看. package com.wxgs.ch01; import java.security.MessageDigest; import java.sec ...
- Object-C中需要注意的小细节
--------------------------------------------关于命名------------------------------------------------- 1. ...
- java中泛型的一个小问题
最近做项目,由于java语法不是非常的熟悉,编写代码过程中不难遇到一些问题: 代码里写了一条这种语句: Map<String, List<String>> configFile ...
- 【Java】需要注意的小细节
一.==和equals 1.比较两个变量时 a.==可以判断两个变量是否相等,如果两个变量是基本类型变量,而且是数值类型,只要两个变量值相等,返回true. 2.比较两个引用变量 a.==只有两个引用 ...
随机推荐
- Spring-boot:快速搭建微服务框架
前言: Spring Boot是为了简化Spring应用的创建.运行.调试.部署等而出现的,使用它可以做到专注于Spring应用的开发,而无需过多关注XML的配置. 简单来说,它提供了一堆依赖打包,并 ...
- matlab-常用函数(3)
matlab取整函数: floor() floor()函数为向下取整函数,如下: floor(0.5) ans= 0 floor(-0.5) ans= -1 ceil() ceil()函数为向上取整, ...
- Oracle:解锁scott用户及设置密码
关于Oracle 10g scott用户解锁的方法两则 解决方法一. 首先确认已经安装oracle 数据库和客户端 在客户端DOS下执行如下语句: 注意提示符号 c:\sqlplus /nolog s ...
- OCUpload的简单介绍与使用
OCUpload (One Click Upload)译成中文就是一键上传的意思.它是JQuery的一个插件. 对于传统的文件上传,只能通过form表单,将enctype设置为multipart ...
- Arrays和Collections 对于sort的不同实现原理
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp46 1.Arrays.sort() 该算法是一个经过调优的快速排序,此算法 ...
- MySQL (二)-- 数据类型(列类型)、数值类型、 小数类型、 时间日期类型、 字符串类型 、 MySQL记录长度、列属性
1 数据类型(列类型) 所谓的数据类型:对数据进行统一的分类,从系统的角度出发是为了能够使用统一的方式进行管理,更好的利用有限的空间. SQL中将数据类型分成了三大类: 2 数值类型 数值类型数据:都 ...
- 201521123107 《Java程序设计》第14周学习总结
第14周-数据库 1.本周学习总结 2.书面作业 1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自己的学号.姓名) 在自己建立的数据库上执行常见SQL语 ...
- 201521123063 《java程序设计》第六周学习总结
1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...
- 201521123068《Java程序设计》第5周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 查看脑图->多态与接口 1.2 可选:使用常规方法总结其他上课内容. 2. 书面作业 1.代码阅读:Child压缩包内源 ...
- DNS原理总结及其解析过程详解
一.域名系统 1.域名系统概述 域名系统DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们使用的机器名字转换成为IP地址.域名系统其实就是名字系统.为什么不叫&quo ...