从头学习JAVA(三)

数据类型和运算符

JAVA语言是一门强类型语言,强类型包括两方面的含义:
1.所有变量必须先声明,后使用
2.指定类型的变量只能接受类型与之匹配的值。

强类型的语言可以在编译过程中发现源代码的错误,从而保证程序更加健壮。


JAVA语言注释一共有3种类型:单行注释,多行注释,文档注释。

单行注释://
多行注释:/* */
文档注释:如果编写java源代码时添加了合适的文档注释,然后通过JDK提供的javadoc工具可以直接将源代码里的文档注释提取成一份系统的API文档。/* /


标识符和关键字

分隔符:分号(;),花括号({ }),方括号(【 】),圆括号(()),空格,圆点(.)

JAVA语句可以跨越多行书写,但是一个字符串,变量名不能跨越多行。如:

//字符串不能跨越多行
String a = "ddddd
    xxxx";
//变量名不能跨越多行
String na
       me = "sam";

标识符:用于给程序中变量,类,方法命名的符号,JAVA语言的标识符必须以字母,下划线( _ ),美元符号开头( $ ),后面可以跟任意数目的字母,数字,下划线和美元符号。字母可以是中文符号,日文符号等;标识符中不能含空格,不能使用JAVA关键字和保留字,标识符的长度没有限制。

JAVA关键字(keyword): java关键字都是小写的,TRUE,FLASE,NULL都不是java关键字.java一共有48个关键字:abstract,assert,boolean,break,byte,case,catch,char,class,continue,default,do,double,else,
enum,extends,final,finally,float,for,if,implement,import,int,interface,instanceof,long,
native,new,package,private,protected,public,return,short,static,strictfp,super,switch,
synchronized,this,throw,throws,transient,try,void,volatile,while.

JAVA保留字:goto,const;保留字的意思是现在还没有使用这两个单词作为关键字,但是以后可能会使用。

JAVA直接量(literal): true,false,null

JAVA语言支持的类型分为两种,基本类型(Primitive Type)和引用类型(Reference Type).
基本类型又分boolean类型和数值类型,数值类型又分整数类型和浮点类型,整数类型包括int,short,long,char和byte,浮点类型包括folat和double。
引用类型包括类,接口和数组,还有一种特殊的null型。所谓引用数据类型就是对一个对象的引用,对象包括实例和数组两种。实际上,引用类型变量就是一个指针,只是java语言里不再使用指针这个说法。空引用(null)可以转换成任何引用类型。

char是字符,是基本数据类型,使用单引号,值得长度只能为1,比如‘a’,‘ 你’。String是字符串,是类,使用双引号。

double类型代表双精度浮点数,float类型代表单精度浮点数。一个double类型数据占8个字节、64位,一个float类型的数值占4个字节、32位,double比float更精确。
JAVA语言的浮点数有两种表示形式:
1.十进制数形式:这种形式就是简单的浮点数,例如5.12、 512.0、 .512,浮点数必须包含一个小数,不然会被当做int类型来处理。
2.科学计数法形式:例如5.12e2(5.12 x 10的2次方)、5.12E2(5.12 x 10的2次方),只有浮点类型的数值才能使用科学计数法形式表示。

JAVA默认的浮点类型是double,例如5.12是double,5.12f是float

所有的正无穷大数值都是相等的,所有的负无穷大数值都是相当的;而NaN(非数)不与任何数值相等,甚至和NaN都不想等。

数值可以使用下划线,比如22可以写成2_2,实际上这个值还是22,一样可以计算。

字符串“true”、“false”不能直接转boolean类型,但是boolean类型的值和字符串进行连接运算,则boolean类型将自动转换成字符串。


基本类型的类型转换

如果系统支持把某种基本类型的值直接赋给另一种基本类型的变量,则这种方式被称为自动类型转换。当把一个表数范围小的数值或变量直接赋给另一个表数范围大的变量时,系统将可以进行自动类型转换。

从头学习JAVA(三)_第1张图片

图所示箭头左边的数值类型可以自动类型转换为箭头右边的数值类型。

强制类型转换会造成数据的丢失,也被称为“缩小转换”比如(TargetValue)value。

表达式类型的自动提升:当一个算数表达式包含多个基本数据类型的值,整个算数表达式的数据类型将发生自动提升。
1.所有byte、short和char类型会被提升到int类型。
2.整个算数表达式的数据类型自动提升到与该表达式中最高等级操作数同样的类型。


直接量:指在程序中通过源代码直接指定的值,例如在int a = 5;为变量a所分配的初始值5就是一个直接量。
JAVA支持8种直接量:
1.int //123、012、0x12
2.long //3L、0x12L
3.float //5.34F、3.14E4F
4.double //5.34/3.14E4
5.char //‘a’、‘\n’、‘u\0061’
6.String //“123”、“你好”
7.null //null,可以赋值给任意引用类型的变量
8.boolean //true、false

String字符串做比较的一些问题

String a = “hello”;
String b = “hello”;
String c = new String(“hello”);

a == b 返回 true;
a == c 返回 false

原因是:字符串是一个比较特殊的对象。
字符串之所以特殊,是因为java会在内容中为String类型的对像开辟一个空间,我们叫他串池!
字符串对象的创建之后会被放入到串池中。
串池有一个特点,就是对于相同对象,池中只存储一份。
那么串池把神马样的String看做是相同的String呢。请看:
String a=”abc”;和String b=”abc” 对于这样的类型的声明方式(不是new出来的)串池把他们看做一个对象,所以池中只存储一分,只是有a 和b 两个引用罢了!
对于String只要用new关键字new出来的string,都是单独的一个对象。
而“==”号,他是用来比较对象的内存地址,所以只要用==号来比较string,只要不是自己比自己,那肯定是false。
而String中的equls方法已经做了处理,他是比较内容,所以要比较string的内容的时候而不是地址的时候,那就用它吧


**运算符:**java的运算符可以分为算数运算符,赋值运算符,比较运算符,逻辑运算符,位运算符,类型相关运算符。

除法运算符的两个操作数有一个是浮点数,是允许除数为0或者0.0的,得到的结果是正无穷大或负无穷大。

求余(%)的两个操作数有一个是浮点数,是允许第二个操作数为0或0.0,得到的结果是非数。

a++和++a的区别:

int a = 5int b = a++ + 6//得到结果是b = 11;

int a = 5int b = ++a + 6;
得到的结果是b = 12

JAVA支持的位运算符有7个:
1.& :按位与
2.| :按位或
3.~ :按位非
4.^ : 按位异或
5.<< :左移运算符
6.>> :右移运算符
7.>>> :无符号右移运算符

|与||的区别(&与&&同理):

int a = 5;
int b = 10;
if (a > 4 | b++ > 10) {
 //a = 5 ,b = 11;
}

int a = 5;
int b = 10;
if (a > 4 || b++ > 10) {
 //a = 5 ,b = 10;
}

如果使用|,一定会执行完判断语句,而如果使用||一旦得到true就不会再执行剩下的判断语句。

三目运算符: String str = 5 > 3 ? “5大于三” : “5小于3”;如果判断为true就取一个值,否则取第二个值。

你可能感兴趣的:(java基础)