Java知识点总结1
1.java的引用传递和值传递
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
答:是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是该对象的引用一个副本。指向同一个对象,对象的内容可以在被调用的方法中改变,但对象的引用(不是引用的副本)是永远不会改变的。
Java参数,不管是原始类型(char byte short int long float double boolean)还是引用类型,传递的都是副本(有另外一种说法是传值,但是说传副本更好理解吧,传值通常是相对传址而言)。
2.代码块的执行顺序
(1)普通代码块:就是类中方法的方法体
public void xxx(){
//code
}
(2)构造块:用{}裹起来的代码片段,构造块在创建对象时会被调用,每次创建对象
时都会被调用,并且优先于类构造函数执行。
{
//code
}
(3)静态块:用static{}裹起来的代码片段,只会被执行一次(第一次加载此类时执行,比如说用Class.forName("")加载类时就会执行 static block),静态块优先于构造块执行。如果某些代码必须要在项目启动时候就执行的时候,我们可以采用静态代码块,这种代码是主动执行的。静态代码块可以用来初始化一些项目最常用的变量和对象。
static{
//code
}
(4)同步代码块:使用synchronized(obj){}裹起来的代码块,在多线程环境下,对共享数据进行读写操作是需要互斥进行的,否则 会导致数据的不一致性。常见的是synchronized用来修饰方法,其语义是任何线程进入synchronized需要先取得对象锁 如果被占用了,则阻塞,实现了互斥访问共享资源。而synchronized也是有代价的。
一个常见的场景是,一个冗长的方法中,其实只有一小段代码需要访问共享资源,这时使用同步块,就只将这小段代码裹在synchronized block,既能够实现同步访问,也能够减少同步引入的开销。
synchronized(obj){
//code
}
执行顺序:静态代码块>静态函数(不调用时不显示,先加载进来)>主函数>构造代码块>构造函数>普通代码块对于继承关系而言。先执行构造链上的所有静态代码块,再依次按照非静态代码块的顺序,执行继承链上非静态代码块。
对于类体内部生成对象的情况,静态代码块第一次加载时执行,即仅仅会在最外侧执行。
<span style="font-size:18px;">public class test
{
public static test t1 = new test();
public static test t2 = new test();
public test(){
System.out.println("构造块1");
}
{
System.out.println("构造块2");
}
static
{
System.out.println("静态块");
}
public static void main(String[] args)
{
test t = new test();
}
}</span>
输出如:
构造块2
构造块1
构造块2
构造块1
静态块
构造块2
构造块1
false
3.向上转型和向下转型
向上转型:子类对象给父类引用,类型提升,动物x=new猫;
向下转型:父类的引用指向自己子类类型,强制转换;动物x=new 猫 ,猫y=(猫)x
但是不能将父类的对象转换成子类类型,动物x=new 动物 猫 y=(猫)x
多态自始至终都是子类对象在做改变。
4.方法调用
(1)super和this.
Super:
a:子类的普通方法可以调用父类的普通方法。
b:子类的构造方法可以调用父类的普通方法。
c:子类构造方法可以调用父类构造方法。
This:
a:全局变量和局部变量重名时,必须用。
b:构造方法可以调用普通方法。
c:普通方法可以调用普通方法。
d.子类构造方法可以调用子类其他的构造方法。
5.多态
实现多态三个必要条件:继承(要不实现),重写、向上转型。当超类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法。
对于成员变量和静态函数。无论编译和运行,都参考左边(引用变量所属的类)
但是对于非静态函数成员函数。简单总结:成员函数在多态调用时编译看左边,运行看右边。编译时仅仅检查子类引用类型是否有该成员函数,并不检查所引用的对象是否具有。运行时才会具体检查。
6.常用的数组赋值方法
System.copy(source,sStart,dest,dStart,size);
7.instanceof
java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例
8.变量赋值问题
Java中的final变量只能由final变量的表达式赋值。非final变量不能由同时包含final和非final变量的表达式赋值。
Java知识点总结1的更多相关文章
- 学Android开发,入门语言java知识点
学Android开发,入门语言java知识点 Android是一种以Linux为基础的开源码操作系统,主要使用于便携设备,而linux是用c语言和少量汇编语言写成的,如果你想研究Android,就去学 ...
- 给Java新手的一些建议----Java知识点归纳(Java基础部分)
写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,希望可以给 ...
- java知识点梳理
网络搜索结果,出处不详,仅供参考 对于刚刚接触Java的人,java基础知识技术点繁多,那么gkstk小编为大家汇总最全java知识点如下,仅供大家参考学习! 1. JVM相关(包括了各个版本的特性) ...
- 自己整理的所有java知识点(不断迭代中)
1. 自己整理的所有java知识点(不断迭代中) 画图工具注册 https://www.processon.com/i/599d35fae4b00d97d7f9bb17 1.1. Java整体知识架构 ...
- Java知识点-判断null、空字符串和空格
Java知识点-判断null.空字符串和空格 // 判断headerKey是否为null,空字符串或者空格 if (headerKey != null && headerKey.len ...
- typora中文版官方免费快速下载以及Markdown的一些常用语法、Java知识点
typora下载 链接:https://某度云盘的域名/s/1geD1APxnyV3gogYW3E08bQ 密码:8fdp 把某度云盘的域名进行替换 1.标题 # 标题1 ## 标题2 ### 标题3 ...
- 给Java新手的一些建议——Java知识点归纳(Java基础部分)
原文出处:CSDN邓帅 写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些Java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行 ...
- 给Java新手的一些建议——Java知识点归纳(Java基础部分)
写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,希望可以给 ...
- Java知识点脑图
做服务器开发有十几年了,其中大部分用到的都是Java服务器开发,从JDK1.4到现在的JDK1.8,从基本的Java Application到 J2EE(JBOSS,Glassfish),OSGI,到 ...
- 给Java新手的一些建议----Java知识点归纳(J2EE and Web 部分)
J2EE(Java2 Enterprise Edition) 刚出现时一般会用于开发企业内部的应用系统,特别是web应用,所以渐渐,有些人就会把J2EE和web模式画上了等号.但是其实 J2EE 里面 ...
随机推荐
- eclipse web项目导入itellij idea并启动
概述 主要分为项目配置和tomcat配置两大步骤. 一.项目配置 打开idea,选择导入项 选择将要打开的项目路径后,继续选择项目的原本类型(后续引导设置会根据原本的项目类型更新成idea的项目),此 ...
- DP的四边形优化
DP的四边形优化 一.进行四边形优化需要满足的条件 1.状态转移方程如下: m(i,j)表示对应i,j情况下的最优值. w(i,j)表示从i到j的代价. 例如在合并石子中: m(i,j)表示从第i堆石 ...
- 解决mssql for linux 中文乱码问题
什么叫一波未平一波又起,这就是,好不容易安装完成了,在用的时候居然出现了乱码,很是头疼,但还是解决了这个蛋疼的问题,在windows中使用mssql这么久,从来没出现过中文乱码的情况,具体原因是出现在 ...
- ItemsControl 与 ICollectionView
ItemsControl base class can automatically interact with ICollectionView classes
- Android中如何禁止音量调节至静音
Android中音量按键在调低音量时,如果一直按住Down按钮不放,则系统将音量跳到最小后,又自动调节到静音状态.这个机制和iPhone是不同的,iPhone中无论你怎么按Volume-按钮,只能调到 ...
- SQL1221N The Application Support Layer heap cannot be allocated. SQLSTATE=57011
不能分配“应用程序支持层“堆 内存不足(系统中可用的调页空间量或交换空间量或系统中可用的物理内存量),可能会导致问题,并提示如下错误信息: SQL1221N The Application Supp ...
- Eclipse插件开发_学习_01_Maven+Tycho 构建RCP程序
二.参考资料 1.用Tycho来构建你的RCP程序(一) —— Plugin
- spring MVC multipart处理文件上传
在开发Web应用程序时比较常见的功能之一,就是允许用户利用multipart请求将本地文件上传到服务器,而这正是Grails的坚固基石——Spring MVC其中的一个优势.Spring通过对Serv ...
- (转)关于Linux核心转储文件 core dump
所谓核心转储文件是内含进程终止时内存映像的一个文件.产生条件:特定的信号会引发进程创建一个核心转储文件并终止运行. 包括哪些特定信号,请参见http://man7.org/linux/man-page ...
- IEflash遇到flash遮挡
遇到IE中(包括IE6+)弹窗广告要flash遮挡的问题,后来想到了常用的iframe方法(参见<解决IE6 select z-index无效,遮挡div的bug>),最终成功了flash ...