Java基础小知识笔记
1. Integer转进制的一个类
2. toBinaryString,toOctalString,toHexString.(转为二进制,八进制,十六进制的方法)
3. 如果·数据的大小没有超过byte/short/char的表述范围,则可以自动转型。
4. 零开头为八进制,零x开头为十六进制
5. byte 1个字节 -127~128
short 2个字节 正负3万
int 4个字节 21亿左右
long 8个字节 可以在数字后加l或L表示
6. 浮点数默认类型为double,要将其变为float,需要在后面加入F/f。
7. float 4个字节 3.4*10^38
double 8个字节
8. 如果要进行不产生舍入误差的精确计算应使用BigDecimal类(大小数)
9. 大整数BigInteger(大整数)
10. char类型用单引号表示,用来表示Unicode字符(通用字符型,可以用\u表示Unicode字符编码,两个字节,能够表示0~65535),运算时直接当做整数来运算,可以把0~65535之间的整数直接转型为char
11. 字符串没有在Java中特别定义为类型,而只是一个类(String)
12. boolean类型只占了一位
13. 自动类型转换:容量小的类型可以自动转换为·容量大的类型
14. (char)
byte—>short—>int———>long
: \ // :
float—>double
实线和 \ 为无精度误差,:和 //为有精度误差有可能损失精度
15.可以将整型常量直接赋值给byte,short,char等类型变量,而不需要进行强制类型转换,只要不超过其表述范围。
16. 当将一种类型强制转换成另一种类型,而又超出了目标类型的表示范围,就会被截断成为一个完全不同的值。但是这个值没有任何意义。
17. 所有的二元运算符(+-*/%),都会有类型提升问题,类型会向容量大的提升,会需要用到强制类型转换。
18. 操作数比较打的时候,要留意是否会溢出,特别是整数操作时,如果溢出,要先对一个因子进行转型,来使整个表达式进行提升。(最好使第一个因子进行转型,以免报错)
19. jdk7中用下划线来标识字符的分割
20. final 常量 只能被初始化一次(常量一般用大写和下划线)
21. 变量,方法名(首字母小写和驼峰原则)。
22. 类名(首字母大写和驼峰原则)
23. 小数也可以取余。
24. 逻辑表达符 && || !只能用于布尔类型
25. 位运算符:取反(~),按位与(&),按位或(|),按位异或(^),左移移运算符(<<),右移运算符(>>)。(右移一位相当于除以2取商,左移一位相当于乘2)例如:int a=3*2*2相当于 int b=3<<2 (问题:怎样算3*2最快?)
26. +两边只要有一个字符串,则变为字符串连接符整个结果为字符串
27. 局部变量必须声明和初始化后才能使用。成员变量(实例变量)在方法外,类内声明,若不初始化,系统会自动使用默认初始化(int 0; double 0.0;char '\u0000/' ; boolean false)
28. Math.random() 返回【0,1)之间的小数
29. switch语句,根据表达式是否与case语句相匹配,若匹配择从case一直往下执行,直到遇到break才跳出switch语句,若无case语句相匹配,则执行default语句。switch(表达式)一般是整型和枚举,可以是字符串。
30. 带标签的break和continue (标签是指后面跟一个冒号的标识符,若使用标签,则break和continue会中断到存在标签的地方,当需要从内循环跳到外循环需要用到)
31. 形参:在方法声明时用于接收外界传入的数据。
32. 实参:调用方法时实际传给方法的数据。
33. void没有返回值
34. 必须通过对象调用方法
35. return有两个作用:1.结束方法的运行;2.并指定要返回的数据。
36. 实参的类型,数目,次序必须和所调用的方法声明的形参列表所匹配。
37. Java中进行方法调用中传递参数时,遵循值传递的原则(传递的都是数据的副本)
38. 基本类型传递的是该数据值的copy值
39. 引用类型传递的是该对象引用的copy值,但指向的是同一个对象。
40. 重载的方法,实际是完全不同的方法,只是名称相同而已
41. 构成重载的条件:不同的含义:形参类型,个数,顺序不同;
42. 不构成重载:1.只有返回值不同不构成方法重载;2。只有形参名不同
43. 在方法声明里有static则不需要再new一个类的实例对象,可以直接调用该方法
44. 递归必须定义递归头(解答:什么时候不调用自身方法?如果没有头,将陷入死循环,也就是递归结束的条件)和递归体(解答:什么时候需要调用自身方法)
45. 递归很耗时,比循环耗时太多,要避免使用递归。
46. 光有属性(成员变量)无方法叫做结构体(C语言)
46. 构造方法,用于创建这个类的对象。无参的构造方法可以由系统自动创建
47. JVM的内存可分为三个区域:栈stack、堆heap、方法区method area
48. 栈(连续的内存空间,速度快)描述的是方法执行的内存模型,栈属于线程私有的,不能实现线程共享。
49. 堆(不连续的内存空间,分配灵活,速度慢)用于存储创建好的对象和数组(数组也是对象)。JVM只有一个堆,被所有线程共享。
50. 执行new相当于已经创建好了对象在堆中
51. 方法区(静态区):JVM中只有一个方法区,被所有线程共享,方法区实际上也是堆,只是用于存储类、常量相关的信息,用来存放程序中永远是不变或唯一的内容(类信息【Class对象】、静态变量、字符串常量等)
52. 构造器也叫构造方法(constructor) 用于对象的初始化;要点:1.通过new关键字调用;2. 构造器虽然有返回值,但是不能定义返回值类型(返回值类型肯定是本类),不能在构造器里使用return返回某个值。3.若我们未定义构造器,则编译器会自动定义一个无参的构造函数,若定义了,则不会自动添加;4.构造器的方法名必须和类名一致
53. 构造器中的this表示创建好的对象;构造方法的第一句总是super()【可以省略,但是若省略,系统会1自动调用】
54. 垃圾回收原理和算法:满足两个基本事情(1.发现无用对象;2。回收无用对象占用的内存空间);相关算法(引用计数法【堆中每一个对象都有一个引用计数,被引用一次,计数加1,被引用变量值变为null,则计数减1,直到计数为0,则表示变为无用对象】和引用可达法【根搜索法:程序把所有引用关系作一张图,从一个节点GC ROOT开始,寻找对应的引用节点,找到这个节点以后,继续寻找这个节点的引用节点,当所有的引用节点寻找完毕之后,剩余的节点则被认为是没有被引用到的节点,即无用节点】)
55. 通用的分代垃圾回收机制基于:不同对象的生命周期是不一样的,因此,不同生命周期的对象可以采用不同的回收算法。
56. System.gc()【程序建议GC启动,不是调用GC】
57. 可通过this来调用构造器 ,且构造器的调用必须位于第一句。
58. this不能用于static方法中。
59. 在程序中产生二义性之处,应使用this来指明当前对象;普通方法中,this总是指向调用该方法的对象;构造方法中,this总是指向正要初始化的对象。
60. static声明得成员变量为静态成员变量,也称为类变量,普通的变量和方法从属于类
61. 不能在静态方法里使用非静态的方法和属性
62. 构造方法用于对象的初始化,静态方法用于类的初始化,在静态初始化块中不能直接访问非static成员。
63. 先初始化父类的静态初始化块,在初始化子类的静态初始化块(构造方法执行的顺序一样)
64. 包名:域名倒着写,再加上模块名
65. 包一定要位于非注释第一句
66. java.awt :画窗口; java.net:包含执行与网络相关的操作的类;java.lang:包含一些Java语言的核心类(String,Math,Integer,Syst等,无需导入便可直接使用),提供常用功能;java.util:包含一些实用工具类(设置系统特性,使用日期日历等)
67. 若导入的包里有同名的类,则直接指明类的位置(cn.strt.oo.Data【cn.strt.oo是包,Data是类】)
68. 静态导入(import static 包.类.静态属性)
69. 面向对象的三大特征:继承、封装、多态
70. Java中只有单继承,只有一个直接父类(Java的接口可以多继承,类只能单继承)
71. 子类可以继承父类的全部属性和方法,除了父类的构造方法,但不可以直接访问父类的私有属性和方法。
72. 如果定义一个类时,没有调用extends ,则父类是java.lang.Object(可以使用Ctrl+t方便查询继承关系)
73. instanceof(对象 instanceof 类)用于判断对象是否是右边类或子类创建的对象,是,返回true,否,返回false
74. 重载(overload)是一个类内多个同名的方法;重写(override)是子类重写父类的方法(可用子类的行为替换父类的行为,即子类方法覆盖父类方法)
75. 重写保证方法名和形参列表一致;返回值类型和声明异常类型,子类小于父类;访问权限,子类大于等于父类。
76. 打印对象实际上就是调用toString()方法
77. “==”代表比较双方是否相同,如果是基本类型则表示值相等,如果是引用类型则表示地址相等即是同一个对象。
78. equals是提供定义对象内容相等的逻辑
79. super是直接父类对象引用,可以通过super来访问父类中被子类覆盖的方法或属性。
80. 访问权限:public>protected>default>private
81. 封装中:自动生成set和get方法:右击->Source->Generate Getters and Setters(对于boolean类型是is方法)
82. 多态是方法的多态,不是属性的多态(多态与属性无关);多态有三个必要条件:继承,方法的重写,父类引用指向子类对象
83. 自动向上转型(例如子类可以自动转为父类),强制向下转型
84. final:修饰变量(被修饰的变量,一旦赋了初值,就不能被重新赋值),修饰方法(该方法不可被子类重写,但是可以被重载),修饰类(修饰的类不能被继承)
85. java.lang包中String类被final修饰,于是不能被继承
86. 数组的的长度是确定的(数组一旦被创建,它的大小就是不可变的),其元素必须是相同类型的,数组类型可以是任何数据类型,包括基本类型和引用类型。
87. for each循环:用于读取数组元素的值,不能修改元素的值,例如:for(int m:a)【把数组a里面的值放到m中】
Java基础小知识笔记的更多相关文章
- Java基础小知识(一)
序言:“不积跬步,无以至千里.不积小流,无以成江海.”每一个庞大的知识架构都是由无数个小知识点慢慢积累起来的,没有量变的积累,就没有质变上的飞跃,成功往往离不开积累. 今天就和大家分享一些我在学习J ...
- java基础小知识
1.1常量: 基本数据类型常量 字符常量 整数常量的表现形式:一进制的形式来表示(二进制,八进制,十进制,十六进制) 生活中:十进制(0-9) ,星期(七进制(0-6)) ,时间(十二进制(0-11 ...
- Java基础小知识1——分别使用字节流和字符流复制文件
在日常使用计算机过程中经常会涉及文件的复制,今天我们就从Java代码的角度,看看在Java程序中文件复制的过程是如何实现的. 1.使用字节流缓冲区复制文件 示例代码如下: import java.io ...
- Java基础语法知识你真的都会吗?
第一阶段 JAVA基础知识 第二章 Java基础语法知识 在我们开始讲解程序之前,命名规范是我们不得不提的一个话题,虽说命名本应该是自由的,但是仍然有一定的"潜规则",通过你对命名 ...
- Java基础入门知识
Java编程入门知识 知识概要: (1)Java入门基本常识 (2)Java的特性跨平台性 (3)Java的编程环境的搭建 (4)Java的运行机制 (5)第一个Java小程序入门 (1)Java ...
- Java 基础部分知识复习
面向对象的特征: 继承.封装和多态 封装 : 把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象去操作.对不可信的信息进行隐藏. 继承: 它可以使用现有类的功能,并在无需重新编 ...
- Java基础学习心得笔记
对于很多只会C语言的初学者而言,面对java基础语法学习,反而感觉很难,其实其中最大的问题不是语法难,而是一种编程思想的转变.面向过程就是把你的代码封装成函数,然后依次去做一件事情,面向过程是把你要做 ...
- Java基础学习总结笔记
Java基础 Java常用内存区域 栈内存空间:存储引用堆内存空间的地址 堆内存空间:保存每个对象的具体属性内容 全局数据区:保存static类型的属性 全局代码区:保存所有的方法定义 修饰符 权限修 ...
- 学习笔记:Java的一些基础小知识之JVM与GC
一.JVM是什么 Java虚拟机(英语:Java Virtual Machine,缩写为JVM),又名爪哇虚拟器,一种能够运行Java bytecode的虚拟机,以堆栈结构机器来进行实做.最早由太 ...
随机推荐
- JS的 try catch使用心得
try{ //正常执行 }catch(e/*你感觉会出错的 错误类型*/){ // 可能出现的意外 eg:用户自己操作失误 或者 函数少条件 不影响下面的函数执行 // 有时也会用在 比如 focus ...
- 强化学习(十三) 策略梯度(Policy Gradient)
在前面讲到的DQN系列强化学习算法中,我们主要对价值函数进行了近似表示,基于价值来学习.这种Value Based强化学习方法在很多领域都得到比较好的应用,但是Value Based强化学习方法也有很 ...
- javascript入门篇(六、正则表达式)
JavaScript 正则表达式 正则表达式是由一个字符序列形成的搜索模式.当你在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容. 正则表达式可以是一个简单的字符,或一个更复杂的模式.正则表达 ...
- PHP中反射的简单实用(动态代理)
<?php class mysql{ function connect($db){ echo "连接mysql数据库${db[0]} \r\n"; } } class ora ...
- PowerDesigner制作UMI图
首先我们要下载一个PowerDesigner,自己上百度下载哈!嘻嘻!!! 我这个是汉化版的 然后点这个,再到空白的地方点一下就创建好了. 然后单击右边箭头然后双击 不管是制作的图还是代码生成的图都可 ...
- 如何高效的学习WEB前端
IT 行业的变化快是众人皆知的,需要持续去学习新的知识内容.但是,往往我们工作之后,经常发现学习的东西很少了,学习效率非常低,感觉自己到了一个瓶颈期,久而久之,就演变成『一年工作经验,重复去用十年』的 ...
- Android Service与Activity的交互
Android中有时候需要在Service中改变Activity的UI,或者在Activity中修改Service中的数值.首先必须使用与Activity绑定的Service,有三种方式可以实现.第一 ...
- SQL Server 创建跨库查詢、修改、增加、删除
一.通过SQL语句访问远程数据库 --OPENROWSET函数 使用OPENROWSET()是个不错的选择,也可以用做跨库查询包括增.删.改.查 下面就来介绍一下OPENROWSET函数的运用 包 ...
- SQL执行WebService
写了一个钉钉发送消息的类, 要发送用友等审核单据信息, 模式: 钉钉发消息功能在webservice中, 用友消息列表中有新消息时,采用触发器执行webservice. 在测试中 ,功能正常 ,但将在 ...
- class基本使用
console.log(` 1.创建一个空对象 2.让this 指向刚刚创建好的空对象 3.执行构造函数内的代码 (为相关的属性和方法赋值) 4.返回创建好的对象`) // 1.创建一个空对象 // ...