下载安装idea
www.jetbrains.com
idea 优化,一些提示,错误提示等方便工具等
java基础语法
- 编译型(complie 一次转化为计算机可读语言,java代码->java编译器->java.class)
- 解释型(将class通过类装载器,字节码校验器-解释器-操作系统平台)
注释
平时我们编写代码,在代码少的情况下可以理解代码,但是一旦结构复杂,就需要用到注释,注释并不会执行。
- 单行注释 //xxxxxx
- 多行注释 /* xxxx */
- 文档注释 /** 22321 */
标识符和关键字
关键字
abstract ,assert ,boolean,break,byte,case,catch,char,class,const,continue,default,do,double,else,enum,extends,final,finally,float,for,goto,if,implements,import,instanceof,int,interface,long,native,new,package,private,protected,public,return,strictfp,short,static,super,switch,synchronized,this,throw,throws,transient,try,void,volatile,while
标识符
所有标识符都应该以(A-Z或a-z,$,_)开始
数据类型
强类型语言
要求变量的使用严格符合规定,所有变量都必须定义后才能使用(安全性但是速度慢)
弱类型语言
vb js
java的数据类型分两大类
-
基本类型
- 数值类型
- 整数 byte -128-127
- short -32768-32767
- int -2147483648-2147482647
- long -9223372036854775808-9223372036854775807
- 小数float 4个字节
- double 8个字节
- 字符char 2个字节
- boolean类型:占1位 只有true和false
什么是字节
位(bit):是计算机内部数据储存的最小单位,11001100是一个八位二进制数
字节(byte):是计算机中数据处理的基本单位 ,习惯上用大写的B表示
1B(byte,字节)=8bit(位)
字符:是计算机中使用的字母,数字,字和符号
1bit表示一位,1byte表示一个字节=8bit,1024B=1KB,1024KB=1M,1024M=1G
- 数值类型
-
引用类型
- 类
- 接口
- 数组
注意:基本数据类型在被创建时,在栈上给其划分一块内存,将数值直接存储在栈上
而引用数据类型在被创建时,首先要在栈上给其引用(句柄)分配一块内存,而对象的具体信息都存储在堆内存上,然后由栈上面的引用指向堆中对象的地址。
在数据做为参数传递的时候,基本数据类型是值传递,而引用数据类型是引用传递(地址传递)。
数据类型拓展
进制 (二进制0b 十进制 八进制0 十六进制0x)
int i=10 十进制
int i=010 八进制
int i=0x10 十六进制 0-9 a-f
浮点数
银行业务
float和double
float f=0.1f ,double d=1.0/10 f!=d
float f=231232323f ,float f2=f+1 f==d
原因:float 有限 离散 舍入误差 大约 接近但不等于,最好完全避免使用浮点数比较
bigdecimal 数学工具类,银行业务用这个比较
字符串拓展
char c1=“a”,char c2=“中” 可以强转为int ,(int)c1
所有字符本质还是数字,unicode 表:97=a 65=A 编码可以处理各种语言文字占2个字节,2的16次方 65536
正常unicode char c3=“\u0061” =a
转义字符
\t制表符 \n换行。。。。。百度查
java语言类型转换
-
由于java是强类型语言,所以要进行有些运算的时候需要用到类型转换
- 由低------>高
- byte,short,char-》int-》long-》float-》double 小数优先级大于整数
-
运算中不同类型的数据转化为同一类型,然后进行运算
-
强制转化 高->低
int i = 128 ,byte b=(byte)i
i=128 b=-128 内存溢出 -
自动转化 低->高 double b=i
-
注意点:
- 不能对布尔值进行转换
- 不能把对象类型转换为不相干类型
- 在把高容量转换为低容量的时候,强制转换
- 转换的时候可能存在内存溢出((byte)128)或者精度问题((int)23.7)
-
-
操作比较大的数的时候注意溢出问题
- jdk7新特性,数字之间可以用_分割 int money=10_0000_0000;
- int years=20; int total = years*money ; //-1474836480 计算后溢出
- long total=money*years;//默认是int 转换前就存在问题
- long total =money*((long)years);//先把一个数转为long 正常输出