一、java语言基础
1.1、关键字
什么是关键字,java赋予特殊意义的单词,它的特点就是所有的字母都要小写,java是严格区分大小写的,比如说public static void class interfaced等。
1.2、注释
注释的作用是注解说明程序,调试程序代码的作用,java中有常用的三种注释方式:1、//单行注释,能嵌套的多行注释,2、/**/多行注释,能嵌套单行注释,不能嵌套多行注释,因为结尾不对,3、/***/文档注释,可以通过javadoc来提取,生成说明书,放到网页文中,这也是和/***/的区别。
注意:在面试的时候,如果有上机题,一定要写注释,体现其自己的专业性,增加获胜几率。
1.3、标示符
程序当中自己定义的一些名称,规则:0-9数字、a-zA-Z26个字母,_以及$组成,注意区分特殊的标示符是否合法,不能以数字开头、不能使用关键字,(扩展:_和$符号的使用。比如Demo_1$Test)。
扩展:java基础当中一些常见规范:包、类以及接口、变量、常量、等书写注意哪些规范。
提到了一种思想,也就是在日后写代码中自己应该养得成习惯,如下:
- 进行需求分析
- 整理思路
- 设计步骤
- 测试
以后编程程序的时候应该耐着性子把这些步骤写出来,总结:代码仅仅是思想的一种体现,先思想再写代码。
二、java数据类型
数据类型在计算机语言里面是对内存位置的一个抽象表达方式,可以理解为针对内存的一种抽象的表达方式,接触每种语言的时候,都会存在数据类型的认识,有复杂的、简单的,各种数据类型都会需要在学习初期去了解,java是强类型语言,所以java对于数据类型的规范会相对严格,数据类型是语言的抽象原子概念,可以说是语言中最基本的单元定义,在java里面,本质上讲将数据类型分为两种:基本类型和引用数据类型。
2.1、基本数据类型:
简单数据类型是不能简化的、内置的数据类型、由编程语言本身定义,它表示了真实的数字、字符和整数。
2.2、引用数据类型:
java语言本身不支持C++中的结构(struct)或者联合(union)数据类型,它的复合数据类型一般都是通过类或者接口进行构造,类提供了捆绑数据和方法的方式,同时可以针对程序外部进行信息隐藏。
2.3、java数据类型在内存中的存储:
基本数据类型的存储原理:所有的简单数据类型不存在引用的概念,基本数据类型都是直接存储在内存中的内存栈傻瓜的,数据本身的值就是存储在栈控件里面,而java语言里面八种数据类型是这种存储模型。
引用数据类型的存储原理:引用类型集成Object类(也是引用类型)都是按照java里面存储对象的内存行来in性数据存储的,使用java内存堆和内存栈来进行这种类型的数据存储,简单地讲:引用是存储在有序的内存栈上的,而对象本身的值存储在内存堆上的。
二者之间的区别:基本数据类型和引用类型的区别主要在于基本数据类型是分配在栈上的, 而引用数据类型是分配在堆上的(需要了解java中的堆栈概念)
2.4、基本数据类型和引用数据类型的本质区别
首先我们分析一下“==”和equals()的区别:
String a = "abc";
String b = "abc";
if(a==b){
System.out.println("a==b");
}else{
System.out.println("a!=b");
}
输出:a!=b;
分析:a和b的地址是不同的,a==b表的是两个变量的地址。
再来定义两个基本类型:
int a = 4;
int b = 4;
if(a==b){
System.out.println("a==b");
}esle{
System.out.println("a!=b");
}
输出:a==b
分析:==在基本数据类型中比较的是两个变量的内容
实际:不论是基本数据类型还是引用类型,它们都会先在栈中分配一块内存,对于基本数据类型来说,这块区域包含的是基本类型的的内容,而对于对象来说,这块区域包含的是指向真正内容的指针,真正的内容被手动的分配到堆上。
2.5、java基本数据类型取值范围计算:
byte在计算中占8个字节,而byte是有符号的整形,用二进制表示时候最高位为符号0代表整数1代表负数,最大值:127,即2的7次方减去1:最小值:即2的7次前面加个负符号:-128(包含开始,不包含结尾)
正数在计算机中是以源码形式存在的。
负数在计算中时以其补码形式存在的,就是负数的绝对值的源码转为二进制再按位取反后加1.
2.6、java数据类型分类:
引用数据类型分3种:类、接口、数组
基本数据类型分为boolean和数值型,其中数值型分为:int、short、long、char、double、float
2.7、java变量的默认初始化值:
类型 默认初始化值
boolean false
int 0
short 0
float 0
double 0.0
char \
long 0
object null
2.8、类型详解
整数类型:byte、short、int、long都是表示整数的,只不过它们的取值范围不一样,取值范围如下:
byte(字节类型):一个byte 8位,取值范围为-128~127 ,占用1个字节,默认都是0
short(短整型):一个short 16位,取值范围为-32768~32767 ,占用2个字节,默认都是0
int(整型):一个int 32位,取值范围-2147483648~2147483647,占用4个字节,默认值是0
long(长整型):一个long 64位,占用8个字节,默认是0L或者0l(推荐使用大写)
可以看到byte和short的取值范围比较小,而long的取值范围太大,占用的空间多,基本上int可以满足我们的日常的计算了,而且int也是使用最多的整型类型了,在通常
情况下,如果java中出现了一个整数数字比如35,那么这个数字就是int型的,如果我们希望它是byte型的,可以在数据后加上大写的B:35B表示它是byte型,同样的35S表示为short型。35L表示long型,表示int我们可以什么都不用加,但是如果表示long型的,就一定要在数据后面加"L"。
2.8.1、定点常量
定点常量是整型常数,它可用十进制、八进制、十六进制三种方式表示。
十进制定点常量:如123、-456、1
八进制定点常量:以0前导,形式0dd....d。如0123表示十进制的83,-011表示十进制的-9.
十六进制定点常量:以0x或者0X开头,如0x123表示十进制的291,-0X12表示十进制数-18.
2.8.2、定点变量
定点变量即整型变量,可细分为字节型变量、整形变量、短整型变量和长整型变量四种。
对各种定点变量的开销内存字节数和数值范围作简要说明。
需要注意的是,如果要将一定点常量赋值给一个定点变量,需要检查常量是否在该变量的表达范围内,如超出范围程序会编译错误。
字符型:
2.8.3、char
java中一个字符(char)表示Unicode字符集中的一个元素。
Unicode字符由16位组成,因此有(65535)不同的字符可用。
Unicode字符集包含所有不同语言的字符,以及数学、科学、文字中的常用符号,所以给了我们很大的灵活性,字符由单引号括起来的单个字符表达。通常用16进制表示。
范围从''到‘?’,用于存放数据类型,占用2个字节,采用Unicode编码,它的前128字节编码与ASCII兼容,字符的存储范围在\~\?,在定义字符型的数据时候要注意加‘’,比如'1'表示字符‘1’而不是数值1.
字符常量:
字符常量指用单引号括起来的单个字符,如‘a’、‘A’特别注意,字符的定界符是单引号,而非双引号。
除了以上所述形式的字符常量值之外,java还允许使用一种特殊形式的字符常量值。
这通常用于表示难以用一般字符来表示的字符,这种特殊形式的字符是以一个"\"开头的字符序列,称为转义字符。
字符变量:
以char定义的变量,如char c = 'a';
要特别加以说明的是java的文本编码采用Unicode集,java字符16位无符号型数据,一个字符变量在内存中占2个字节。
注意:char c = '1';我们试着输出c看看,System.out.println(c);结果就是1,而如果我们这样输出呢?
System.out.println(c+0);
结果却变成了49,这是因为0是int型,进行了向上类型转换,结果是个int型。
如果我们这样定义c,char c = '\1',输出结果仍然为1,这是因为字符‘1’.对应着unicode编码就是\1