java基础
JDK下载官网 www.oracle.com/
因为sun公司在2009年4月20号被甲骨文(oracle)公司以74亿美元收购!所以JDK所属oracle公司了!
======================================================
JDK&JRE&JVM
JDK(Java Development Kit) :Java开发工具
JRE(Java Runtime Environment) :Java运行环境
JVM(Java Virtual Machine):java虚拟机
JDK包括JRE及JVM
JRE包括JVM
======================================================
java环境变量的配置
JAVA_HOME: 配置JDK的安装目录
class:配置java编译器解释器目录 %JAVA_HOME%\bin
======================================================
一个.java文件(源文件)可以对应多个.class文件(字节码文件)
1 public class Welcome{ 2 public static void main(String[]args){ 3 System.out.println("Welcome java!"); 4 } 5 } 6 class A{} 7 class B{} 8 class C{}
======================================================
java注释:
单行 :// 注释内容
多行: /* 注释内容 */
文档注释 : /** 注释内容 */
======================================================
java标识符(idetifier):
作用:给类、方法、变量命名
命名规则:必须以字母、_、或者$符开头,其它部分可以是字母、_、$以及数字的非java关键字且大小写敏感长度无限制的任意组合!
正确的java标识符:abc、a_123、a_、_123、$_123、$、... 错误的如:123abc、#、*、...
java标识符可以采用汉字命名,因为java采用unicode编码字符集、而unicode编码字符集中包含了中文,一个中文占两个字节,一个字节是8位,那么总共能包含 216=65536个汉字!
但是最好别用汉字,因为中途可能将涉及到转码问题,比如 将utf-8格式的.java文件重构为其它编码格式的.java文件时,可能会出现错误!
======================================================
java数据类型:
Java中数据类型分为基本数据类型和引用数据类型。
基本数据类型又分为:数值型(整数byte(1个字节(8位算上符号位),范围位:-27至27-1,为什么-1呢,因为中间还有个自然数0占了一位)、short(2个字节)、int(4个字节)、long(8个字节) 浮点数float、double)、字符型(char)、布尔型(boolean)
引用数据类型:类、接口、数组。
byte a=100; //如果数据的大小在所定义类型范围内,则可正常编译,否则报Type mismatch: cannot convert from int to byte
定义long类型时: long a=10000L;//如果定义的数(在此为10000)超过整数表述范围,那么报编译错误,否则按照自动类型转换(int 自动类型转换位long类型处理)
float:单精度型,位数可以精确到小数点后7位 ,声明变量: float a=2.13F;//必须加F,因为浮点型的默认为double类型,所以在此存在类型转换问题
double:双精度型 精度是float类型精度的2倍 声明变量:double b=3.14;//浮点数默认为double
浮点数存在舍入误差,像银行里面精确数字表示请使用BigDecimal类。所以在编程中避免浮点数的比较,如:
float a=0.1f; double b=1.0/10; a==b 即为false;
超过整数表述范围用BigInterger,精确表示浮点数用BigDecimal
字符型char:
用单引号括起来的单个字符,其表述范围为:(0-65535之间),例如:‘A'表示一个字符。
如果我们要输入特殊字符’,那么char a='\''; // \代表转义
布尔类型:布尔类型只占一位,不是一个字节 ,因为true为1,false为0
======================================================
类型转换:
自动类型转换:容量小的转换为容量大的(这里容量不是只所占的字节,而是指表述的范围)
特殊的比如: long(8个字) 可以自动转换为 float(4个字节),因为float的表述范围比long大,但时转换后存在丢失精度问题。
强制类型转换:
当将一个类型强制转换为另一个类型,但又超过了转后类型的表述范围,就会被截断为一个完全不同的值。该值没有任何意义!
特殊例子:
int money=1000000000; //10亿
int year=20;
int total1=money*year;//溢出 超出了int类型的表述范围
long total2 =money*year;// 也是溢出,因为计算后的数还是int类型,在转换为long类型之前就溢出了
long total3=(long)(money*year);//理由同上
long total4=(long)money*year; //正确
System.out.println(total*);
总而言之在计算容易溢出问题上首先最好将所要计算的表达式的第一位做强制类型转换,如果最后一位做强制类型转换,可能之前的表达式计算结果已经溢出了,所以计算后的结果还是溢出的!
======================================================
java进制:
二进制:0101010100010
八进制:以0开头
十进制:默认
十六进制:以0x开头
进制转换:
A、十进制转换其他
十进制转成二进制
Integer.toBinaryString(int i)
十进制转成八进制
Integer.toOctalString(int i)
十进制转成十六进制:
Integer.toHexString(int i)
B、其他转换十进制
二进制转十进制
Integer.valueOf("1010",2).toString()
八进制转成十进制
Integer.valueOf("125",8).toString()
十六进制转成十进制
Integer.valueOf("ABCDEF",16).toString()