`

java语言基础总结

阅读更多

 一、关键字与标识符
1-1、关键字不能被用作类、变量、方法或者其他任何内容的标识符。
1-2、所有关键字都以小写字母开头。
1-3、关键字是发展变化的。jdk1.5中加入了enum枚举关键字。
1-4、true、fasle、null、const以及goto不是关键字,但也不能用作标识符。如:boolean const = true;是不能编译的。
1-5、不要把Java的关键字和其他语言混淆了。如:C++的include、unsigned等。
1-6、标识符由字母、数字、下划线(_)、美元符号($)、人民币符号 (¥)组成,并且第一个字符不能是数字,也不能把JAVA中的关键字和保留关键字作为标识符。另外,标识符可以使用汉字、日文片假名等Unicode字符,如:boolean 吃饱了吗 = true;。Unicode字符集的前128个是ASCII码表。

二、常量和所有原始数据类型的范围
2-1、基本类型的存储空间。byte--8位,short--16位,int--32位,long--64位,float--32位,double--64位。这六种数字类型都是有符号的。固定的存储空间正是Java可移植性、跨平台的原因之一!
2-1、基本类型的存在导致了Java OOP的不纯粹性。因为基本类型不是对象,一切皆对象是个小小的谎言。这是出于执行效率的权衡。
2-2、使用公式-2的(位数-1)次幂到2的(位数-1)次幂-1确定整数类型的范围(byte、short、int、long)。
2-3、char是16位Unicode字符或者说是16位无符号整数,范围从0到65535。即便如此,可以强制转换非法的数据,如:char c1 = (char) 10000;  char c2 = (char) -200;。可以从二进制存储的角度理解这点。
2-4、整数有八进制(以0开头的整数)、十进制、十六进制(以0x或0X开头的整数)表示。
2-5、char可以用单引号表示单个字符,如:'良'。也可以用unicode值'"ucafe'(四位十六进制数)。
2-6、布尔型boolean。布尔型只能是true或者false,并且测试它为真还是假。它不能进行任何其他的运算,或者转化为其他类型。
正例:boolean b1 = 1 > 2;    反例:int seen = button.isVisible();
实践:简洁是美德,请不要这样写:if ( is == true && done == false ) ,只有新手才那么写。
对于任何程序员 if ( whether && !done ) 都不难理解吧。所以去掉所有的==fasle 和 ==true。
2-7、默认的浮点类型是双精度(double),要想要一个float必须在浮点数后面加F或者f。如:float pi = 3.14;是错误的。
2-7、默认的整数类型是int型,要想使用长整型可在后面加“l”或“L”,如:1000L。(小写l容易被误认为1,不推荐用)
2-8、float可以精确到小数点后7位有效数字,第8位的数字是第9位数字四舍五入上取得的;double可以精确到小数点16位有效数字,第17位的数字是第18位数字四舍五入上取得的。盖茨到底有多少钱?要用double表示,用float是装不下的(诠:当然float用科学计数法是可以表示,但精确不够)……
2-9、如果要求精确的答案,请不要使用float和double,因为它们是为了在广域数值范围上提供较为精确的快速近似运算而精心设计的。然而,它们没有提供完全精确的结果。尤其是对货币计算尤为不适合,因为要让一个float或double精确地表达0.1(或者10的任何)
2-10、BigInteger(java.math.BigInteger)支持任意精度的整数。BigDecimal支持任意精度的定点数。
2-11、初始化无论怎么强调都不过分!Java为所有的成员变量提供了默认初始化:byte、short、 int、long--0  float--0.0f double--0.0  boolean--false  char--'"u0000',特别地对象类型的引用全被初始化为null。(注意!除了数组之外的局部变量是得不到这种优待的,需要你自己初始化。另外,默认初始化的值是你想要的吗?所以最好明确地对变量进行初始化,一般是在构造函数中。)
2-12、基本类型之间的转化。Java的类型检查很严格,从低精度转换到高精度是无须显式转换的,double d = 123;。但是反过来,进行窄化转换,由高精度向低精度,或者一种类型到另一种类型,则必须使用强制类型转化。Java提供了安全转化机制,但是结果是否是期望的,你自己保证吧。
double d = 12.5;
float f = (int) d; //结果不是13,而是12!
浮点型转化为整型时,不进行四舍五入,直接截断小数点后面的数。
2-13、提升。各种基本数据类型进行混合运算,结果会是表达能力最强的那种。如:int和long运算,结果是long,整型和浮点型运算结果是浮点型。特殊的一点是:只要类型比int小(如char、byte、short),那么在运算之前,这些值会自动地转换成int。例子:
byte b1 = 12;
byte b2 = b1 + 1; //在编译时出错了!因为b1+1已经是int型了!切记
2-14、浮点类型的科学表示法。在数学中e代表自然对数(Math.E给出了double值),而在Java中e代表10的幂次。浮点型的数可以这样表示float f = 1e-27f; 代表1乘以10的负27次幂。

三、数组
3-1、数组不是集合,它只能保存同种类型的多个原始类型或者对象的引用。(注意保存的是对象的引用,而不是对象本身。)
3-2、数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。
3-3、数组声明的两种形式:一、int[] arr; 二、int arr[];  推荐使用前者,这符合Sun的命名规范,而且容易了解到关键点,这是一个int数组对象,而不是一个int原始类型。
3-4、在数组声明中包含数组长度永远是不合法的!如:int[5] arr; 。因为,声明的时候并没有实例化任何对象,只有在实例化数组对象时,JVM才分配空间,这时才与长度有关。
3-5、在数组构造的时候必须指定长度,因为JVM要知道需要在堆上分配多少空间。反例:int[] arr = new int[];
3-6、多维数组的声明。int[][][] arr; 是三维int型数组。
3-7、一维数组的构造。形如:String[] sa = new String[5]; 或者分成两句:String[] sa;  sa = new String[5];
3-8、原始类型数组元素的默认值。对于原始类型数组,在用new构造完成而没有初始化时,JVM自动对其进行初始化。默认值:byte、short、 int、long--0  float--0.0f double--0.0  boolean--false  char--'"u0000'。(无论该数组是成员变量还是局部变量)
3-9、对象类型数组中的引用被默认初始化为null。如:Car[] myCar = new Car[10]; 相当于从myCar[0]到myCar[9]都这样被自动初始化为myCar = null;
3-10、对象类型的数组虽然被默认初始化了,但是并没有调用其构造函数。也就是说:Car[] myCar = new Car[10];只创建了一个myCar数组对象!并没有创建Car对象的任何实例!
3-11、多维数组的构造。float[][] ratings = new float[9][]; 第一维的长度必须给出,其余的可以不写,因为JVM只需要知道赋给变量ratings的对象的长度。
3-12、数组索引的范围。数组中各个元素的索引是从0开始的,到length-1。每个数组对象都有一个length属性,它保存了该数组对象的长度。(注意和String对象的length()方法区分开来,这两者没有统一起来是很遗憾的。)
3-13、Java有数组下标检查,当访问超出索引范围时,将产生ArrayIndexOutOfBoundsException运行时异常。注意,这种下标检查不是在编译时刻进行的,而是在运行时!也就是说int[] arr = new int[10];  arr[100] = 100; 这么明显的错误可以通过编译,但在运行时抛出!Java的数组下标检查是需要额外开销的,但是出于安全的权衡还是值得的,因为很多语言在使用数组时是不安全的,可以任意访问自身内存块外的数组,编译运行都不会报错,产生难以预料的后果!

四、运算符和表达式
4-1、不要记操作符的优先级。用括号的可读性更好,也节省你的脑细胞。
4-2、操作符可能会改变操作数的自身的值,这被称为副作用。涉及赋值的语句肯定具有副作用了,另外两个是前缀和后缀式的“++”“--”。副作用不是贬义的词,看看它的概念就知道了。
4-3、关于对象的比较。
“==”比较的是两个引用是否指向同一个对象,注意是引用的比较,不是对象的比较。equals()方法是Object对象的一个方法,也就是说所有的对象都中继承了equals()方法。按照常理,我们通常会覆盖equals()方法,在其中加入我们认为两个对象的内容相同的条件,然后a.equals(b),比较的是内容了。但是如果你建立了新类,而且没有覆盖equals方法,那么equals比较的仍然是引用!因为equals的默认行为是比较引用。这点要注意了!Java类库中一般都覆盖了equals方法。
4-4、&&和||  与 &和| 的比较。相同点:都可以用在布尔表达式中。不同点:前者支持短路运算,后者不支持。
实践:短路运算能带来潜在的性能提升,该用哪个不必多言了吧。
………………

五、类声明和修饰符
5-1、每个源文件只能有一个public类,也可以没有。
5-2、如果有public类,那么该源文件的文件名必须和public类的名字一致;如果没有public类,该源文件的名字可以是任意的。
5-3、包语句(pagage)必须第一行;导入语句(import)必须放在包语句和类声明之间。如果没有包语句,则导入语句必须第一行。(注释、空行不计算在内)
5-4、Java有3种访问控制修饰符:public、protected和private。有4种访问级别,按访问控制的严格程度由小到大:public、protected、默认和private。
5-5、类的访问级别只有两种:public和默认。具有public访问级别的类能够被所有包中的所有类看到;具有默认访问级别的类只能被它所在的同一个包中的类访问。
5-6、除访问修饰符外,类也能被修饰为final、abstract、或strictfp。final类不能被继承,abstract类不能被实例化,strictfp类的所有表达式中的浮点数将遵守IEEE754标准。
5-7、类不能同时被修饰为final和abstract,两者具有相反的含义。
5-8、类中只要有一个方法被修饰为abstract的,它所在的类就必须被修饰为abstract的。
5-9、abstract类可以有抽象方法,也可以有非抽象方法。
5-10、继承abstract类的第一个具体类必须实现所有的abstract方法

 

 

附加:

1.java里面出现的小数点数字都是 default double,而不是float!

float f1=1.222;这是错的,double d=1.222;和float f1=1.222f;这才是正确的。

 

 

2.  Float的范围已经很大了,普通情况不会去用Double类型数据,

  System.out.println(Float.MAX_VALUE);3.4028235E38
  System.out.println(Float.MIN_VALUE);  

  System.out.println(Double.MAX_VALUE);1.7976931348623157E308
  System.out.println(Double.MIN_VALUE);  

 

3. 类容器与数组容器长度问题:

String ,List 的长度都是分别通过方法:s.length(), l.size()

数组容器是长度是通过一个属性 ss.length (因为数组每加一个元素length长度都会自动增加1)

分享到:
评论

相关推荐

    java 语言基础总结

    Java语言基础总结 Java是一种广泛使用的面向对象的编程语言,以其跨平台、安全性和稳定性而闻名。本总结将深入探讨Java语言的基础知识,包括语法、类与对象、封装、继承和多态等核心概念。 1. **Java语法基础** ...

    java基础知识总结

    Java 基础知识总结 Java 是一种广泛使用的编程语言,由 Sun 公司的 James Gosling 等人于 1991 年开始开发。Java 有三种技术架构:JavaEE、JavaSE 和 JavaME。JavaSE 是桌面应用程序的开发基础,JavaEE 是企业环境...

    java基础知识总结(经典).pdf

    1. **关键字**:Java语言中具有特殊含义的单词,例如`if`、`else`、`public`等。 2. **标识符**:程序员自定义的名字,用于命名类、方法、变量等。标识符可以包含字母、数字、下划线(`_`)和美元符号(`$`),但不能以...

    Java语言基础笔记

    Java语言基础是编程学习的重要部分,它...总结来说,Java语言基础涵盖了变量、数据类型、控制流、类和对象、异常处理、集合框架以及多线程等多个方面。深入学习并实践这些知识点,将为你在Java开发领域打下坚实的基础。

    Java语言基础小结

    ### Java语言基础小结 #### 一、JDK, JRE, JVM的关系 - **JVM(Java Virtual Machine)**:Java虚拟机是Java程序跨平台运行的核心,它负责执行Java字节码(.class文件),确保Java程序可以在不同的平台上运行而...

    java基础学习总结笔记

    知识主要包括:Java基础常识、如何安装Java工具、Java语言的基础组成、Java面向对象、Java多线程、Java常用类、集合(重点)、IO流、GUI图形界面、网络编程、正则表达式、反射、注解、类加载器、动态代理等等,另外...

    java 基础知识总结(经典)

    这篇“Java基础知识总结(经典)”涵盖了Java开发中的核心概念和重要知识点,旨在为初学者和有经验的开发者提供一个全面的回顾。以下是主要的学习点: 1. **Java环境配置**:在开始编程之前,必须安装Java ...

    Java基础知识点总结.docx

    Java是一种广泛使用的面向对象的编程语言,其基础知识涵盖了多个方面,包括语法、面向对象特性、异常处理、多线程、I/O流、网络编程、反射技术、设计模式以及JVM等核心概念。以下是对这些知识点的详细说明: 一、...

    Java 基础核心总结.pdf

    Java是世界上最流行的编程语言之一,尤其在企业级应用开发领域占据主导地位。它由Sun Microsystems在1995年推出,现在由Oracle公司维护。Java的设计理念是“一次编写,到处运行”(Write Once, Run Anywhere),这...

    java基础总结资料

    "java基础总结资料"涵盖了Java语言的核心概念,是学习和复习Java基础知识的重要资源。以下是一些主要的知识点: 1. **Java语法基础**:包括变量声明、数据类型(基本类型和引用类型)、运算符、流程控制(如if语句...

    java基础知识总结(经典)

    Java 基础知识总结是 Java 程序员不可或缺的一部分,本总结将涵盖 Java 的基础知识,包括 Java 概述、Java 语法基础、变量、数据类型、运算符、控制语句、方法、数组、继承、多态、接口、异常、IO 流等。 一、Java ...

    Java 基础核心总结_.zip

    这份"Java 基础核心总结_.zip"文件显然包含了学习Java编程所必需的重要知识点,旨在帮助初学者或开发者巩固基础。让我们逐一深入探讨这些主题: 1. **Java概述**:Java是一种跨平台、面向对象的编程语言,由Sun ...

    java基础总结大全(笔记).pdf

    Java基础总结大全涵盖了Java编程语言的核心概念,从JVM、JRE和JDK的区别,到环境变量的设置,再到变量的定义和类型转换,深入浅出地讲解了Java的基础知识。 1. JVM、JRE和JDK: - JVM(Java Virtual Machine)是...

    Java基础知识总结 (绝对经典)

    ### Java基础知识总结(绝对经典) #### 一、Java概述 - **起源与发展**:Java语言始于1991年Sun公司的James ...通过以上内容的学习和实践,能够帮助开发者建立扎实的Java基础,并有效地应用Java语言来解决实际问题。

    Java语言基础PPT优秀资料.ppt

    Java语言基础知识点总结 Java语言是由语言规范和一系列开发库组成的,学习Java语言需要掌握语言规范和开发包的使用。 一、Java语言基本元素 1. 标识符(Identifier) 标识符是程序员对程序中的各个元素加以命名...

    毕向东java基础总结(完整版)

    毕向东java基础总结(完整版) 本资源为毕向东老师的java基础总结,涵盖了java的基础知识点,从零开始学习java的自学笔记。本文档对java的基础知识进行了系统的总结,包括java的概述、java语法基础、变量、数据类型...

    Java语言程序设计(基础篇)习题答案

    "Java语言程序设计(基础篇)习题答案"是一份针对初学者的重要参考资料,它旨在帮助学习者巩固Java基础知识,理解并掌握核心概念。这份资料可能包含一系列与Java编程相关的练习题及其解答,涵盖变量、数据类型、控制...

Global site tag (gtag.js) - Google Analytics