初识java的面向对象及Java中数据类型-----自学JAVA(第三节),
初识java的面向对象及Java中数据类型-----自学JAVA(第三节),
本文属于小编原创,请使用者标明出处:
一、结构化
顺序结构(从上往下依次执行);
选择结构(包括单选择、双选择、多选择),if语句和switch语句;
循环结构,有两种模式:
模式一:先判断后执行,即先判断条件,为真时执行循环体,并且循环体结束时自动跳到循环入库处,再次判断循环条件,如果为假时,跳出循环。(for、while)
模式二:先执行后判断,即从入口处直接执行循环体,循环体结束时判断条件,如果为真,则返回入口处继续执行循环体,直到条件为假时退出循环体。(do....while)
二、面向对象
类是对一类事物的描述, 类定义=成员变量+方法;
对象(也叫实例)是实际存在的该类事物的个体;
对象具体状态(用数据值来描述它状态),对象具体操作(根据这些操作改变对象状态)。这些状态在Java中叫成员变量,操作在Java中叫方法;
三、Java数据类型
Java语言是强类型语言:所有变量必须先声明,后使用;指定类型的变量只能接受类型与之匹配的值。
Java语言注释一共有三类:单行注释(//)、多行注释(/*.....*/),文档注释(/**.....*/)
其中使用JDK提供的javadoc工具可以直接将源代码里文档注释提前成一份系统的API文档;
javadoc工具默认只处理以public或protected修饰的文档源文件中在类、接口、方法、成员变量、构造器和内部类之前的注释;
数据类型分类如下图一
(图一)
1、基本数据类型
java语言中使用整数类型时需要注意事项:
(1) 如果直接将一个较小的整数值(在byte、short类型范围内)赋给一个byte、short变量,系统会自动把这个值当成byte、short类型来处理。
(2)如果使用一个巨大的整数值(超出int范围),Java不会自动把这个数值当成long类型处理。如果希望当成long类型处理,应在这个整数值后增加l或者L
举例一:
byte a=56;//系统自动把56当成byte处理
long b=123;//系统自动把123当成long处理
//int c=b;//这种是错误:因b是long,不能自动赋给int,需要强制类型转换(b数值在int范围内,否则会等不到正确值)
int c=(int)b;//此时OK
举例二:
byte a=56;//系统自动把56当成byte处理
//byte b=a-56;//错误的,因表达式a-56中,a被自动提示为int类型,而int-int结果是int,把a-56赋给b就报错,因b类型是byte
(3)Java 7增加了对二进制整数的支持,二进制整数以0b或0B开头
举例三:
int a=0b11010100;//输出a=212;
byte b=0B01101001;//输出b=105;
//定义一个32位二进制数,最高位是符合位
int c=0B10000000000000000000000000000011;//输出c=-2147483645
备注:符号位是1时,表明它是一个负数,负数在计算机里以补码形式存在(需要转换成源码才能得到正确的值,如上面c);
符号位是0时,表明它是一个正数;
整数值默认是int类型,因此使用二进制定义整数时,默认占32为(如上a,其实前面还存在8位为0的位置,因第32位是0,所以输出正数105);
如果在定义某个二进制整数时在后添加L或l,这个二进制默认占64位(其中第64位是符合位)。
举例三:
//定义一个8位二进制数,默认占32位,因此是一个int类型正数,但强制类型转换为byte时产生了溢出,最终导致a的值为-23;
byte a=(byte)0B11101001;
//具体分析如下图二
(图2)
2、字符型
计算机底层保存字符时,实际保存该字符对应的编码,因此char类型的值也可以当成整型值来使用(相当于一个16位的无符号整数),char类型的变量和值完全可以参与加、减、乘、除等运算,也可以比较大小----->实际用的是该字符对应编码参与运算。
字符型值有如下三种表现形式:
(1)、直接通过单个字符来指定字符型值,如:'A'、'9'等;
(2)、通过转义字符表示字符型值,如:'\n'、'\t'等;
(3)、直接使用Unicode值来表示字符型值,如'\uXXXX'等(XXXX代表一个十六进制整数)。
3、浮点型
对于精确度要求低的使用float即可,对于精度要求较高的使用double即可,对精度要求极高可以考虑使用BigDecimal类
Java的浮点型有两种表现形式
十进制数形式:如5.12、512.0等;
科学计数法形式:如5.12e2或5.12E2等;
只有浮点型的数值才使用科学计数法形式
Java默认浮点类型是double,如果希望把一个浮点类型当成float类型处理,需在这个浮点数后面加f或F。
Java提供了三种特殊的浮点数值:
正无穷大(整数除以0):通过Double或Float类的POSITIVE_INFINITY表示,所有正无穷大数值都相等。
负无穷大(负数除以0):通过Double或Float类的NEGATIVE_INFINITY表示,所有负无穷大数值都相等
非数(0.0除以0.0或对一个负数求开方):通过Double或Float类的NaN表示,NaN不与任何数值相等,甚至和NaN都不相等。
备注:只有浮点数除以0才能得到正负无穷大(Java语言自动把浮点数运算的0当成0.0),如果一个整数除以0,则程序会抛出异常:ArithmeticException:/by zero
四、类型转换
1、自动类型转换
如下图三所示Java支持的自动类型转换的类型:
(图三)
表数范围小的可以向表数范围大的进行自动类型转换;
当把任何基本类型的值和字符串进行连接运算时,基本类型的值将自动类型转换为字符串类型;
2、强制类型转换
当把范围大的强制转换为范围小的类型时,需要特别注意,否则容易引起信息丢失(如上图二分析);
3、通常情况下,字符串不能直接转换为基本类型,但是通过基本类型对应的包装类则可以实现吧字符串转换成基本类型。
Java 为8种基本类型都提供了对应的包装类型:
boolean---->Boolean
byte--------->Byte
short-------->Short
int----------->Integer
long--------->Long
char---------->Character
float--------->Float
double------>Double
每个包装类都提供了一个parseXxx(String str)静态方法用于将字符串转换为基本类型
举例:
int a=45;
String b=a+"";//输出表达式a+""中a自动提示为String类型
int c=Integer.parseInt(b);//c=45;
4、表达式自动提升遵循原则:
(1)所有的byte类型、short类型、char类型将被自动提升到int类型;
(2)整个算数表达式的数据类型自动提升到与表达式中最高等级操作数同样的类型;
System.out.println("hello"+'a'+7);//输出helloa7
System,out.println('a'+7+"hello");//输出104hello
五、字符串常量池
关于字符串直接量需要注意:当程序第一次使用某字符串直接量时,Java使用常量池来缓冲该字符串直接量,如果程序后面部分需要用到该字符串直接量时,Java会直接使用常量池中的字符串直接量。
常量池:指的是在编译期被确定,并被保存在已编译的.class文件中的数据。
举例:
String a="hello";
String b="he"+"llo";//a==b返回true,因a、b都是直接量。所以取的是常量池中数据,因而相等。
String c=new String(a);//a==c返回false
补充知识:
1、Java中不允许之间访问对象,而是通过对对象的引用来操作对象。
2、类之间的结构关系
一般--->特殊:典型的继承关系,一种“is a ”关系;
整体---->部分:典型的组合关系(在一个类里保存另一个对象的引用),是一种“has a”关系。
3、Java语言区分大小写;Java所有关键字都是小写的。
4、数值中使用下划线分割
Java 7引入一个新功能,可以再数值中使用下划线
如:int a=0B1000_0000_0000_0000_0000_0000_0000_0011;
double b=3.14_15_16_17;
相关文章
- 暂无相关文章
用户点评