java基础选记

java数据结构简略图

123
在这里插入图片描述

关于java字符转换

在这里插入图片描述

关于java成员变量访问权限

在这里插入图片描述

关于java的一些文件后缀解释

.class:编译后的Java文件 ;
.java:是未编译的Java程序;
.jsp:是Java 服务器页面技术,支持Java代码的动态网页;
.xml:可拓展文本标记语言,一种文本格式,常用来做配置文件;
.jar:一种压缩包格式,常用来打包 Java 类库。

float的一些问题
  1. float a = 1.5 是错误的,小数不加后缀默认是double类型,double类型无法自动转换为float类型。float a = 1 是正确的,可以将int赋值给float。
  2. 对于float的变量相除获得的数可以是小数。
java异常

时异常必须显示处理,运行时异常交给虚拟机。
运行时异常可以不处理。当出现这样的异常时,总是由虚拟机接管。比如我们从来没有人去处理过Null Pointer Exception异常,它就是运行时异常,并且这种异常还是最常见的异常之一。出现运行时异常后,系统会把异常一直往上层抛,一直遇到处理代码。如果没有处理块,到最上层,如果是多线程就由Thread.run()抛出,如果是单线程就被main()抛出。抛出之后,如果是线程,这个线程也就退出了。如果是主程序抛出的异常,整个程序也就退出了。运行时异常是Exception的子类,也有一般异常的特点,是可以被Catch块处理的。只不过往往不对它处理罢了。也就是说,如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是主程序终止。

关于java的一些运算时需要注意的点

在这里插入图片描述

关于java中的重载

在这里插入图片描述

关于java形参与实参

在这里插入图片描述

关于byte与 ++

++a先是触发拆箱操作Byte.byteValue,得到基本类型的值127,然后执行+1操作,使得值变为-128,最后触发装箱操作Byte.valueOf将value=-128的Byte对象赋值给a。
在这里插入图片描述

包装类与基本数据类型

在这里插入图片描述

关于静态初始化块,初始化块,构造器执行顺序

在这里插入图片描述

关于java值传递和引用传递

首先要知道两个概念:值传递,和引用传递;
1.对这到题而言,String 属于值传递,数组属于引用传递
2.change(String str, char ch[] ) ,若把第一个参数名给成其他, 非“str”,例如: change( String s, char ch[] );最后的输出将会是: test okandgbc
3.所以题目中的 public void change(String str, char ch[]){
str= “test ok”;
ch[0]= ‘g’;
}
该str 只是参数中的str,而并非原来的str,而参数中的str仅仅是原来的一个副本,所以副本的改变并不会造成原来的也跟着那个改变
4,对于参数中的 ch[] ,这里是把原来的引用传递了进来,而不是副本,所以这里改变就一定会造成原来的内容的改变

关于 ++ 与赋值的关系

count = count ++;这个先将count这个值0暂存起来,然后count自加1变成1,最后将暂存的值赋值给count,count最终的值为0

关于构造函数

构造函数只能被调用,不能被继承。子类默认调用父类无参构造器,若父类没有无参构造器,子类需要用super()调用父类有参构造器,且super()位于子类构造器的第一行。

关于java标识符

Java标识符由数字、字母、下划线(_)、美元符号($)或人民币(¥)组成,首位不能是数字。并且Java关键字不能作为标识符。

java 数据类型

基本数据类型:byte,short,int,long,float,double,char,boolean

引用类型:类,接口,数组

String 字符串常量,当创建之后即不能修改

StringBuffer 字符串遍历,可修改 线程安全

java 栈溢出和内存溢出

java 在堆上分配内存,由GC负责自动回收不再使用的内存,在 Java 代码中我们维护一个内存对象的引用变量,通过这个引用变量的值,我们可以访问到对应的内存地址中的内存对象空间。在 Java 程序中,这个引用变量本身既可以存放堆内存中,又可以放在代码栈的内存中(与基本数据类型相同)。 GC 线程会从代码栈中的引用变量开始跟踪,从而判定哪些内存是正在使用的。如果 GC 线程通过这种方式,无法跟踪到某一块堆内存,那么 GC 就认为这块内存将不再使用了。
当需要为对象实例分配内存,而堆的内存占用又已经达到-Xmx设置的最大值。将会抛出OutOfMemoryError异常

函数的调用过程都体现在堆栈和退栈上了。调用构造函数的 “层”太多了,以致于把栈区溢出了,只要这个方法还没有返回,它就一直存在。如果线程的方法嵌套调用层次太多(如递归调用),随着java栈中帧的逐渐增多,就会发生stackOverFlowError。
解决方法:1:修改程序。2:通过 -Xss: 来设置每个线程的Stack大小即可。

java三大性能调优参数

-Xms -Xmx -Xss
-Xss规定了每个线程堆栈的大小。一般情况下256K是足够了。影响了此进程中并发线程数大小。
-Xms初始的Heap的大小。

-Xmx最大Heap的大小。

在很多情况下,-Xms和-Xmx设置成一样的。这么设置,是因为当Heap不够用时,会发生内存抖动,影响程序运行稳定性。

java异或

0 ^ 1 得 1
1 ^ 1 得 0
0 ^ 0 得 0
1 ^ 0 得 1

抽象类和接口

(1)抽象类可以有构造方法,接口中不能有构造方法。

(2)抽象类中可以有普通成员变量,接口中没有普通成员变量

(3)抽象类中可以包含静态方法,接口中不能包含静态方法

(4) 一个类可以实现多个接口,但只能继承一个抽象类。

(5)接口可以被多重实现,抽象类只能被单一继承
(6)如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值