java基础--自我总结
1.带小数点数字默认为double类型,double范围比float大,为了不损失精度,double类型不会自动转换成float类型:
例:float f = 1.0f //必须这么写
2.所有的Exceptions都继承自Throwable.
3.java标识符:以字母开头的字母数字序列,
字母 -- 大小写英文字母、下划线(_)、美元符($),也可可以是Unicode字符集里的符,如:汉字等;
数字 -- 0~9。
其中,不能包含+、-及关键字。
4.java中instance variable、class variable和local variable区别:
(1)static variable也成class variable,属于类所有,它也是多线程编程时产生问题的主要来源;
(2)non-static variable 称为 instance variable,实例变量;
(3)local variable,局部变量,只在某个域中有效;
static variable 与 instance variable 区别:
(1)instance variable在对象被创建时初始化,假如有5个对象,那5个对象中该instance variable可以有不同的值。
(2)static variable在类被第一次加载到jvm中时初始化,像c中的global variable,被所有instance共享,因此在multi-thread编程时要特别注意线程安全问题。
instance variable 与 local variable 区别:
(1)local variable只在scope中可见,在scope外不可见,不可被访问,scope由{ }界定。
(2)instance variable根据其access modifier可被不同的代码访问,public 的可以被在任意处的instance访问,protected可被subclass访问,private 只能在自身中被访问。
access modifier 不能用于local variable,也不能使用static,但可以使用final,对于匿名内部类来说,只能使用final local variable。
5.JavaScript对象获取属性值的方法:
(1)objectName.propertyName
(2)objectName("propertyName")
(3)objectName["propertyName"]
6.final关键字(用于成员变量、本地变量、方法以及类)
(1)final变量:凡是成员变量或者本地变量(方法中变量或代码块中的变量)声明为final都叫final变量,经常和static关键字一块使用,用作常量。如果是基本数据类型的变量,一旦被初始化就不会改变;如果是引用类型的变量,则对其初始化后便不再指向另一对象。
(2)final方法:不能被子类的方法重写,比非final方法快,编译的时候就静态绑定了,不需要运行时再动态绑定。private会隐式的被指定为final方法。
(3)final类:不能被继承,java中String和Integer以及其他包装类。
(4)final关键字的好处:
**$**:提高了性能,JVM和java应用都会缓存final变量;
**$**:final变量可以安全的多线程环境下进行共享,而不需要额外的开销;
**$**:使用final关键字,JVM会对方法、变量及类进行优化。
PS:如果final变量是基本数据类型及String类型时,如果编译期就知道它的值,编译期会将它当成编译期常量使用。
PS:final参数 -- java采用的是值传递,对于基本数据类型,直接相当于将变量进行拷贝,即使没有final修饰,方法内的变量改变也不会影响方法外的变量;对于引用变量,传递的引用的值,让实参和形参指向同一个队形,即使形参指向另外一个对象,也不会影响实参。
例:final StringBuffer sb = new StringBuffer("abc"); //fianl修饰的引用对象
sb.append("def"); //使用append修改值,没有差生新的对象,不会报错
sb = new StringBuffer("def"); //产生新的对象,会报错
7.switch-case用法及注意事项
(1)switch(A),jdk1.7之前A只能是数值类型,如byte、short、char、int及枚举等,不能是long和String;jdk1.7后A可以是String。
(2)case后面必须跟常量;
8.接口、类、属性、方法各有哪些修饰符
(1)接口的修饰符:public、abstract。(默认情况下接口是public abstract)
(2)类的修饰符:public、abstract、final、类缺省访问控制符
(3)属性的修饰符:4中可访问控制符(public、default、protected和private)、final、static、volatile和transient
(4)方法的修饰符:4中可访问控制符(public、default、protected和private)、final、static、synchronized、abstract、native(本地方法控制符)
9.内部类(一般只为外围类使用)
(1)普通内部类对象隐式的保存了一个引用,指向创建它的外围类对象;
(2)不能从嵌套类的对象中访问非静态的外围类对象 ;
(3)内部类可以继承某个接口,无论外围类有没有继承;
10.String、StringBuffer和StringBuilder的区别
(1)String使用字符数据保存字符串,private final char value[],因为有final修饰,所以String对象是不可变的;
(2)StringBuffer和StringBuilder都是继承自AbstractStringBuilder类,在该类中也使用字符数据保存字符串,char[],所以这两个类的对象是可变的。
(3)String对象是不可变的,也可理解成常量,所以是线程安全的;StringBuffer对调用的方法加了同步锁,所以也是线程安全的;StringBuilder并没有对方法进行加同步锁,所以是非线程安全的。
11.字面值常量:如1988、3.45、true/false等;
12.局部变量和局部内部类不能用public、protected、private和static修饰。
成员内部类可以用权限修饰符修饰(public、protected、private和缺省修饰符)
13.字符串截取
(1)java虚拟机采用Unicode16(UCS2)编码,所有字符在内存中都是2个字节,对于英文字符,其实占一个字节,高位是补位的,中文字符占两个字节。
(2)String str = "fjajf汉字fldajlf汉字"; byte[] bytes = str.getBytes("Unicode"); bytes前两个是标志位:bytes[0] = -2; bytes[1] = -1;
14.java Date、String、Long三种日期类型之间的相互转换
(1) //String转化成Date
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
Date date = simpleDateFormat .parse("20180124153000");
//Date转化成long
long shijian = date.getTime();
//long转化成Date
Date date = new Date(123456L);
//Date转化成String
String str = simpleDateFormat.format(date);
java基础--自我总结的更多相关文章
- Java基础面试题总结
目录 索引 Java基础知识篇 Java web基础知识总结 Java集合篇常见问题 Java基础知识篇 面向对象和面向过程的区别 面向过程: 优点:性能比面向对象高,因为类调用时需要实例化,开销比较 ...
- java基础30问
Java基础知识30问 1. 面向对象和面向过程的区别 面向过程 优点: 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机.嵌入式开发.Linux/Unix等一般采用 ...
- JAVA基础总结【面试】
前言 近间陆续面试了不少的求职的前(JAVA).后(WEB)端开发人员,包括实习生.应届毕业生.一两年工作经验的.也有三四年工作经验的,也算见过了比较多的开发人员,想在这里做个总结,本次主要讲一讲面试 ...
- 夯实Java基础系列9:深入理解Class类和Object类
目录 Java中Class类及用法 Class类原理 如何获得一个Class类对象 使用Class类的对象来生成目标类的实例 Object类 类构造器public Object(); register ...
- 夯实Java基础系列15:Java注解简介和最佳实践
Java注解简介 注解如同标签 Java 注解概述 什么是注解? 注解的用处 注解的原理 元注解 JDK里的注解 注解处理器实战 不同类型的注解 类注解 方法注解 参数注解 变量注解 Java注解相关 ...
- Java后端工程师必备书单(从Java基础到分布式)
Java开发工程师一般负责后端开发,当然也有专门做Java Web的工程师,但是随着前后端的分离,越来越多的Java工程师需要往大后端方向发展. 今天我们就来介绍一下Java后端开发者的书单. 首先要 ...
- Java 基础知识面试题(2020 最新版)
Java面试总结汇总,整理了包括Java基础知识,集合容器,并发编程,JVM,常用开源框架Spring,MyBatis,数据库,中间件等,包含了作为一个Java工程师在面试中需要用到或者可能用到的绝大 ...
- 夯实基础系列一:Java 基础总结
前言 大学期间接触 Java 的时间也不短了,不论学习还是实习,都让我发觉基础的重要性.互联网发展太快了,各种框架各种技术更新迭代的速度非常快,可能你刚好掌握了一门技术的应用,它却已经走在淘汰的边缘了 ...
- Java基础面试题(史上最全、持续更新、吐血推荐)
文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...
随机推荐
- firefox + pentadactyl 实现纯绿色高效易扩展浏览器(同时实现修改默认状态栏样式)
这几天开始使用firefox+pentadactyl来搭建一个开源.可扩展.完全绿化的浏览器环境,以便随身带着使用,其中firefox的使用了24.0的长期支持版, 这边版本稳定, 快速, 兼容性好, ...
- Java中PrintStream(打印输出流)
Java中PrintStream(打印输出流) PrintStream 是打印输出流,它继承于FilterOutputStream. PrintStream 是用来装饰其它输出流.它能为其他输出流 ...
- R语言学习 - 热图绘制heatmap
生成测试数据 绘图首先需要数据.通过生成一堆的向量,转换为矩阵,得到想要的数据. data <- c(1:6, 6:1, 6:1, 1:6, (6:1)/10, (1:6)/10, (1:6)/ ...
- 2018最新Python小白入门教程,30天学会Python
随着Python的技术的流行,Python在为人们带来工作与生活上带来了很多的便捷,因为Python简单,学起来快,也是不少新手程序员入门的首选语言.作为一名Python爱好者,我也想跟大家分享分享我 ...
- Springboot2.0中jpa默认创建的mysql表为myisam引擎问题
使用Springboot2.0后,使用jpa操作mysql数据库时,默认创建的表的引擎是myisam,myisam是不能加外键的,找了一些资源,最终可以用此方法解决! yml格式: spring: j ...
- React组件设计技巧
React组件设计 组件分类 展示组件和容器组件 展示组件 容器组件 关注事物的展示 关注事物如何工作 可能包含展示和容器组件,并且一般会有DOM标签和css样式 可能包含展示和容器组件,并且不会有D ...
- python字符串方法replace()简介
今天写replace方法的时候的代码如下: message = "I really like dogs" message.replace('dog','cat') print(me ...
- [模拟赛FJOI Easy Round #2][T1 sign] (模拟+求字符串重复字串)
[题目描述] 小Z在无意中发现了一个神奇的OJ,这个OJ有一个神奇的功能:每日签到,并且会通过某种玄学的算法计算出今日的运势.在多次试验之后,小Z发现自己的运势按照一定的周期循环,现在他找到了你,请通 ...
- 2.8 补充:shell变量引用方式
一 变量 变量:本质上是程序中保存用户数据的一块内存空间,变量名就是内存空间地址. Shell中:变量可由字母数字和下划线组成,以字母或下划线开头. 命名:PATH=/sbin ...
- [luoguP2659] 美丽的序列(单调栈)
传送门 单调栈大水题 l[i] 表示 i 能扩展到的左边 r[i] 表示 i 能扩展到的右边 ——代码 #include <cstdio> #include <iostream> ...