java01基础

java基础第一篇
1. JAVA发展史:
SUN公司创始的
1991 – 产生 OAK
1995 – 产生JAVA 爪哇
1996 – JDK1.0
1998 -JDK1.2 - 变化 – java进入了java2时代
将java分为J2EE JAVAEE,J2SE JAVASE,J2ME
—J2SE(Standard Edition):标准版,适用于普通应用程序的开发;
—J2EE(Enterprise Edition):企业版,适用于大型企业级应用程序的开发;
—J2ME(Micro Edition):微型版,适用于移动设备或嵌入式设备的程序开发。

2002 – JDK1.4
2004 – JDK1.5
2006 –JDK1.6
2009 – 被Oracle收购
2011 – JDK1.7
2014 – JDK1.8
2017 – JDK1.9

问题:为什么在当时JAVA语言会脱颖而出。C,C++
JAVA:特性:跨平台
2. JAVA运行机制
先编译后执行(运行)
高级语言分为:编译型语言 解释型语言
Java:编译解释型语言
3. JAVA环境的搭建
3.1搭建步骤:
1)下载并安装JDK(java开发工具包)
1.1安装:
……\java\jdk1.8.0.2
JDK:JAVA Development Kit
…….\java\jre1.8.0.2 JRE:javaruntime environment

1.2 Java程序是运行在JVM上的,而要运行一个程序,需要安装jre,说明JRE中包含了JVM
JDK,JRE,JVM三者的关系:JDK包含JRE,JRE包含了JVM
2.配置环境变量:
找环境变量:
计算机右键->属性->高级系统设置->高级Tab栏->环境变量
1.JAVA_HOME:jdk的安装路径
2.path:在原有内容的尾部或头部加;将jdk下bin文件夹的路径
配置bin路径方式一:直接复制bin的路径
方式二:%JAVA_HOME%\bin
3.在记事本写一个JAVA小程序,用命令来执行程序
根据java的运行机制:
1. javac HelloWorld.java – >编译生成一个HelloWorld.class
2. java HelloWorld – >对.class文件中的程序进行解释执行

  1. Eclipse工具 – IDE:Integrated Development Environment :所谓集成开发环境
    4.用JAVA开发程序过程:
    1.创建一个项目
    首先需要导入jdk 步骤:window–preference–java–installjr—add(去根目录找到添加即可)
    2.项目下创建包
    命名规范:
    公司域名反写+项目名称+包的类型
    域名:tedu.cn
    包名:cn.tedu.bank.service
  2. 注释
    a) 单行注释 //注释内容
    b) 多行注释
    /*
    *
    */
    c) 文档注释

  3. JAVA变量
    变量:在内存中开辟一块空间用于保存数据。
    变量的声明:
    格式:数据类型 变量名;
    变量的赋值: =
    变量的初始化:
    第一次给变量赋值
    2种方式:
    声明的同时初始化
    先声明后初始化:变量在使用前必须初始化
    变量的访问:对变量进行存取值

变量的注意点:
1. 变量的命名规范
a) 变量名必须由字母,数字,_,$组成
b) 数字不能开头
c) Java中严格区分大小写
d) 不能和java关键字一样
e) 中文可以作为变量名,但是不建议使用
变量名最好做到见名知意
int age;
String studentName; //驼峰命名法

静态常量 STUDENT_NAME;

练习题:下面代码正确吗?
int 123go = 100; 数字打头错误
int 成绩 = 60;
int break= 200;break关键字
int score = 80;
System.out.println(Score);大小写不一致

  1. JAVA基本数据类型
    1. 8种基本数据类型
      整数类型:byte short int long

浮点类型:float double

字符型:char

布尔类型:boolean

8种基本数据类型在内存中占用的空间大小
byte 1字节 – 8位 -2^7-2^7-1
short 2字节 – 16位 -2^15-2^15-1
int 4字节 – 32位 -2^31-2^31-1
long 8字节 – 64位 -2^63-2^63-1

01010101 – 1字节 8位

byte:用来表示整数类型 范围:-128-127

byte b = 123;
//数据溢出
byte b = 128;

   int:整数类型  
       -2147483648 – 2147483647

       int  i= 10000000000;

在java中,如果直接给出一个整数,那这个整数默认是int类型
int直接量可以是十进制,八进制,十六进
二进制,十进制,八进制,十六进制

计算机认识的只有二进制
十进制,八进制,十六进制 – java认识的

八进制:0-7 写法:057
十六进制:0-9 a b c d e f 写法:0xa9
十六进制:对二进制数进行缩写
十六进制的本质就是二进制

二进制:
1000 0111
8421
从右开始,每一位二进制位上表示的数是2^(n-1),每一位上对应的值叫做权重
进制间的转换:
二进制转十进制:
Eg:1000 0101
1*2^0+1*2^2+1*2^7
方法:每一位上的值*权重之和
十进制转二进制:
方法:除2取余,余数倒置 15
二进制转16进制:记着加0x
0101 1010 - 0x5a
16进制转二进制:
0x78 - 0111 1000

练习题:
0111 1010 0110 1111

Int直接量可以是十进制,八进制,十六进制

int a = 23;
int b = 067;
int c = 0x234;
int类型间相除,如果结果除不尽,那么取整(没有四舍五入)
   int a = 9;
   int b = 4;
   int c = a-b;
   int d = a/b;   2

long:长整型
如果要定义一个long类型的变量并赋值,要在直接量后面加L/l

long l = 23L;
给变量赋值时需要注意数据溢出。

浮点类型:
Java中如果给出一个小数,默认是double类型
float:单精度浮点数
定义: float f = 3.2F/f;
double:双精度浮点数

·· Float和double类型精度问题:
Double和Float在计算机中都是以科学计数法保存数据的。
eg:3.134457777 是以3.13445E1 即3.13445*10^1的形式保存的
float:4个字节,32位, 在这 32 bit 中,
- 1个bit表示符号位, - 8个bit表示指数位, - 剩下的23个bit是有效数字位。
- 2的23次方是8388608,即7位十进制有效数字。 按照这个表示方法转化成10进制之后,它能表示的最高精度是7位有效数字。

float :1位符号位, 8位指数位,23位尾数位
double:1位符号位,11位指数位,52位尾数位

float尾数位23位,2^23=8.3E6,7位,不同的编译器规定不同,有些是7位,有些8位
double尾数52位,2^52=4.5E15,16位,所以double的有效位数是16位 ,编译器不同,有些是15位,有些是16位

赋值举例精度保存
double d = 3.123456678987657899;
System.out.println(f);

double类型数据进行运算会出现精确问题:

double d1 = 3.0;
double d2 = 2.9;
double d3 = d1-d2;
d3的结果是不精确的。

计算机底层是二进制,二进制中无法精确的表示1/10,就好比十进制中无法精确的表示1/3

二进制中其实没办法保证所有的计算结果都是精确的

因为double类型的数据在进行运算的时候可能会出现不精确的结果,所有java中通常double类型不用于做精确计算。 - BigDecimal

字符类型:char
定义:char c = ‘a’;
Char类型字符保存到内存中的是Unicode编码
Unicode编码:国际编码 10万+
保存的是16位无符号整数
Char字符集,每一个字符都和Uncode编码中的一个数字对应

Char字符集 0-65535
Char字符本质是一个16位的无符号整数

了解几个字符对应的Unicode编码:
a:97 b:98
A:65 B:66
中:\u4e2d
中文:\u4e00-\u9af5

每一个字符都对应Unicode编码的一个数字

给char类型的变量赋直接量:
1.‘a’
2. 整数值
3. Unicode编码 \u16进制

boolean:true,false

boolean flag = 5<3;

2 . 类型转换
注意点:boolean类型和其他基本数据类型不兼容,boolean类型和其他类型不能相互转换
自动转换(隐式转换)

byte—>short à int à long—>float à double

char –à int
强制转换(显示转换)—将大范围的数转换成了小范围
long l = 345;
` int I = l; //报编译错误的
int i = (int)l; //正确的,强制转换
强制转换时需要注意数据溢出

3 . 不同类型间的数据运算
两个变量进行运算,如果类型不同,那么首先范围小的类型转换成范围大的类型,再运算,运算的结果一定是和范围大的类型保持一致。
注意:运算过程中的数据溢出(不报错的)

byte,short,char三种类型参与运算时,先一律转换成int类型再进行运算
其他类型间运算,如果类型不同,那么先提升类型,后进行运算

  • 注意点:运算过程中的数据溢出
  • eg:
  • long distance1 = 10000 * 365 * 24 * 299792458L;
  • long distance2 = 10000 * 365 * 24 * 299792458;

注意点:
Char c1 = 98;
Char c2 = 90;
Char c3 = c1+c2; //编译错误
Char c4 = 98+90; //正确的
原因:
C4右边的运算过程是在编译期完成,编译器会优化结果

C3右边的运算过程是在运行期完成,不会优化结果

猜你喜欢

转载自blog.csdn.net/TomHaveNoCat/article/details/82623730