第二章,第二步:java的基本类别数据结构与运算
前言
本课讲述知识点主要为:
- java程序的基本结构
- 变量和数据类型
- 整数、浮点数、布尔运算
- 字符与字符串
有C语言基础对于这部分内容就很好理解
java程序基本结构
一个完整的java入口程序通常是表现为一个类的形式如下
e.g.:
public class m_hellow {
public static void main(String ards[])
{
System.out.println("Hello,Bao");
//第一条语句
System.out.println("second,line");
//第二条语句
}
}
必须有且仅有一个 公开,静态,返回值为空,方法名为main并且输入参数为的方法。
java的编码格式相对是宽松的但是必须遵守基本的编程规则,并且尽量遵守规范的编程格式(eclipse默认的格式就是规范的格式)
类
类,class,作为java面向对象语言的一个重要载体,其命名规则如下:
- 可以并仅由字母、数字和下划线组成
- 必须由字母作为命名的开头
- 并且应当遵从公认的命名规则
(例子中的命名就是不太规范的命名可以修改为 Myhellow)
方法
方法由:修饰部分,返回值,方法名(输入)组成排列方式如下:
public
和static
就是修饰部分表示公开和静态
void
表示返回值为空
main
为方法名
String
表示输入类型,ards
表示输入的变量名
关于修饰部分有4种修饰符:
public、private、(无)、protected。
其中最常用的就是public和private:
public
:所有类可以访问,可以被类内部、子类、本包、外部包使用
private
:仅类内部可以访问
其次是(无)、protected
(无)
:仅类内部和本包可以访问
protected
:不可被外部包访问
语句
语句是程序真正执行的部分,以分号结束
例如:System.out.println("Hello,Bao");
注释
注释程序不执行编译的部分,其存在的意义主要是方便编程理解
有3种注释语法
例如:
/**
*
* @author Administrator
* 第三类注释
*/
public class m_hellow {
/*
* 第二类注释
* */
public static void main(String ards[])
{
//第一类注释
System.out.println("Hello,Bao");
//第一条语句
System.out.println("second,line");
//第二条语句
}
}
- 第一类注释为单行注释,从双斜线开始,到回车结束
- 第二类注释为多行注释,从斜线星号开始到星号斜线结束
- 第三类注释为特殊的多行注释,从斜线两颗星号开始,到星号斜线结束,这种注释用于生成文档注释,通常输入方法为输入/**后键入回车,eclipse就会自动的帮助创建文档注释
变量和数据类型
变量就是数值的载体,在java中变量和方法是类似的,接受修饰符的修饰。
例如:public static int a=100;
变量可以持有某一个类型的数值
例如int a=1;
也可以指向某一个对象
String a =“123_abc”;
变量必须先定义后使用,其定义方法为:
变量类型 变量名 = 初始值;
变量的特征为可以进行赋值并且可以重新赋值
字符串变量是一种特殊变量,对于字符串变量的赋值和运算是一种特殊的计算方式。
变量的存储单元
计算机内存的最小存储单元是字节,一个字节是8位的二进制数或者是2位16进制数
存储的数值可以为0~0xff。
1B=1Byte=8b
1KB=1024B
1MB=1024KB
以此类推
常见的数据类型为:
- byte:1个字节
- short:2个字节
- int:4个字节
- long:8个字节
- float:4个字节(浮点数)
- double:8个字节(浮点数)
- char :2个字节(字符类型)
- boolean :1或者4个字节(布尔类型)//较为特殊,不建议记忆
整形变量
整形变量共有4种:byte、short、int、long
byte a1 =127 ; //数据长度为一个字节 -128~127
byte a2 =-128 ; //-0x80~0x7f
short b1= 32767;//数据长度为2个字节-32768~32767
short b2=-32768;//-0x8000~0x7fff
int c1= 2147483647;//数据长度为4个字节-2147483648~2147483647
int c2= -2147483648;//-0x80000000~0x7ffffffff
long d1= 9223372036854775807L; //数据长度为8个字节
long d2= -9223372036854775808L;
知识点
- 整形long需要在结尾加一个L(建议使用大写L,因为小写会和数字1搞混)
- 不同表达形式的数数值是一样的,比如127和0x7f就是相等的。
127=0x7f=0b01111111 - 16进制的整形需要用0x开头
- 2进制整形需要用0b开头
- 整形可以在定义的过程中加入下划线,下户线不影响数值但是不能放在头部和尾部前。
例如:
int a =1_11;//_11和111_是不合法的
下划线功能用于方便计数整形的位数例如:
int a =2_000_000_000;
浮点变量
浮点变量共有2种:float、double。
float f =1.123f; //32位,4字节
double d =1.1234;//64位,8字节
浮点变量可以被表示为科学计数法
科学计数法:
double d2 =1.1234e2;//这个数值等于112.34
布尔变量
布尔变量:boolean
布尔变量只有2个值
boolean t =true; //真
boolean f =false; //假
boolean test = 5<6; //通常应用于逻辑判断语句中
字符类型
字符类型:char
char c1 = ‘a’; //字符a
char c2 = ‘&’; //字符&
字符类型只能输入一个字符。
(下文的字符和字符串会重新讲述)
修饰符
变量前修饰符支持和方法相同的修饰符,并且支持一个特殊的修饰符:final
如果在变量命前用final修饰则这个定义的变量就为常量,不可修改,一般要求常量命名为大写用于做区分。
例如:final double PI = 3.141596;
整数、浮点数、布尔运算
整数运算
- 整数运算的结果只为整数
- 整数运算结果永远精确
- 运算过程中会自动提升位数
- 由于运算结果溢出不报错因此需要选择合适范围的整形(ing,long)
基础运算符
加减乘
a=1+1; //运算得a=2
a=1-1; //运算得a=0
a=2*2; //运算得a=4
除法运算符
//取整取余
a=7/3; //运算得a=2
a=7%3 //运算得a=1
原理为
7/3=2……1
自加减运算符
- +和- -,用法和C语言相同
- ‘+ +’:自己+1 ,单独使用时 a++和++a相同等价于a=a+1,参与运算时a++特殊为先参与运算进行a=a+1的运算。
- ‘- -’:自己-1 ,单独使用时 a–和--a相同等价于a=a-1,参与运算时a–特殊为先参与运算进行a=a-1的运算。
位移运算
位移运算分为左移,带符号右移,不带符号右移三种
int a = 0b0000_1000_1000_0001;//数值为0x881
//左移:,<<
int b=a<<8; //此时B的数值为0b1000_0001_0000_0000=-0x8100
//带符号右移:
int c=b>>8; //此时c的数值为0b1000_0000_1000_0001=-0x8081
//不带符号右移
int c2=b>>>8; //此时c2的数值为0b0000_0000_1000_0000=-0x0081
对于位移运算如果移动的位数到了空的地方会被抛弃。如果符号位有数据则右移运算有2种形式
位运算
应用运算符&和或运算符|
int a= 0b0000_1010
int b=0b1001_1001
int c=a|b;//此时c的数值为0b1001_1011
int d=a&b;//此时d的数值为0b0000_1000
int e=a^b;//此时e的数值为0b1001_0011
int f=~b;//此时f的数值为0b0110_0110
其运算是每一位对齐进行运算,将结果生成在对应位上。
- &:都为1则为1,否则为0
- |:都为0则为0,否则为1;
- ^:不相同为1,否则为0
- ~:1变0,0变1
浮点数运算
特征:浮点数往往不能不能精确表示。
(由于浮点数是二进制表示小数除法,因此对于不能转换的数不能精确表示,例如0.1)
运算规则:运算时候会自动把非浮点数(整形)转为浮点型运算最后保存为浮点数
(不提升型号的运算类型,整形相互运算)
浮点数的特殊运算:
double d1 =0.0/0; //NaN 不报错显示为not a number
double d2 =1.0/0; //Infinity 无穷大
double d3 =-1.0/0; //-Infinity 无穷小
强制转型:
- 浮点转换为整形时会直接丢失小数部分,因此如果需要4舍5入需要在转型前加入0.5:(int)(1.7+0.5);//值为2 ;(int)1.7 ;//值为1.
- 当浮点数大小超过整形最大值时,强制转型会自动转成整形的最大值
布尔运算
布尔运算的运算结果为布尔型,当满足运算条件时输出为真,否则为假
数值判断运算符:
- ‘>’:大于
- ‘>=’ :大于等于
- ‘<’:小于
- ‘<=’:小于等于
- ‘==’:相等
- ‘!=’:不相等
短路运算符:
- &&:都为真时为真,否则为假(当前方运算符判断为假时会跳过后面的运算内容)
- ||:都为假时为假,否则为真(当前方运算符判断为真时会跳过后面的运算内容)
三元运算符
a?b:c;//根据a语句运算的真值与否决定运行b语句还是c语句,当a为true时运行b否则运行c;
注意:b语句和c语句运算的类型必须相同。
字符类型与字符串类型
字符类型
char是character的简写
char 保存一个字符 用单引号表示,例如 char c = ‘a’;
char 保存的字符编码是Unicode,因此可以通过把char型赋值为int来查看其编码,同样可以用编码方式来声明字符例如:char c = ‘\u0041’;//此时保存的字符为字符 ‘A’此处的0041是一个16进制数;
字符串类型
字符串类型不是基本类型,是一个引用类型
String 表示一个字符串,用双引号表示,例如Sting s = “abc”; //包含3个字符
转意符号:\
常用转意符号组:’\n’,’\r’,’\”’,’\t’,’\\'
\\的用法:表示字符\而不是转移符号,例如:当想要表示\n字符而不是字符组含义时写法为\n。
引用类型
这种类型在声明的时候会在内存开辟2个空间,一个是其自身的空间,另一个是其指向的空间,
当对其直接赋值的时候并不是对其的内容进行赋值,而是将其重新定向到另一个空间上例如:
String a = "112";
String b = "456";
a=b;
b="985";
此时a就指向了”456”所在的空间,b指向了 ”985”的空间。
但是如果是
String a = "112";
String b = "456";
a=b;
b.setCharAt(0,'3');
此时 a和b都指向同一个地址,并且地址内的值是 “356”,因为此时是对于空间内部数值的修改而不是对于指向的修改
另外引用类型可以指向一个特殊类型:Null,表示为空
空值(Null)的含义不等于与空字符串””
结语
本课学习完毕,其实这些基础知识对于我们这类程序员来说应该是完美掌握的,最多是细节缺少一些,因此没有必要死记硬背,学会运用就好。
加油学习(๑╹◡╹)ノ"""