Java开发环境,基础语法(变量),8种基础数据类型,数值类型,原码补码反码,操作符

学习是一辈子的事情

java 是一门编程语言
网页
(前端php html javaScript 后端 java)
服务器 网站

java课程体系:
java程序设计 语法
java SE java的核心类库
数据库 Oracle/Mysql
html javaScript 前端框架
后端
流行的框架

C++ 大型网游    英雄联盟

sun  詹姆斯.高斯林  JAVA之父
	2009年sun被Oracle公司收购了  74亿美元

静态的网页  跨平台不兼容
mac   windows   linux   红旗   ubuntu  麒麟

1.安装java开发环境:
JDK: java developer Kit java开发工具包
安装JDK之后就可以进行java开发
JRE: java runtime environment java运行环境
是一个java程序能够运行的最小单位
一个java程序只需要JRE环境就可以运行了
1.JVM: java virtual machine java虚拟机
2.Libraries

JDK安装完成之后生成一些目录:
	bin  存放的是java的命令  
		  javac   编译java源代码的命令    把java源代码编译成 .class文件
			.class文件是字节码文件
	include  存放一些头文件  .h 文件
	jre
	lib      java的核心类库
	src.zip  java核心类的源代码
	

	
JDK 包含 JRE 和 java的命令 以及核心类库
	JRE 包含java虚拟机 一些必须的东西
	


系统:  32位    64位
	win xp   32位
	win 7  win 8  win10  64位
	在64位系统里面  如果安装 32位的软件则安装在Progma File(x86)
						     64位的软件则安装在Progma File
		x86   32位系统 
		x64   64位系统 

配置环境变量:
	新建 JAVA_HOME      JDK的安装路径  C:\Program Files\Java\jdk1.8.0_121
	Path	添加 %JAVA_HOME%\bin
	        添加 %JAVA_HOME%\jre\bin
	新建 CLASSPATH  .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
	JVM虚拟机在加载类的时候查找的路径
	

写一个最简单的java程序
	验证java环境是否已安装好
	验证环境配置有没有问题

过程:
	第一步:新建文本文件  .txt
	第二步:打开该文件 编写源代码
	第三步:保存退出  修改文件名 及 文件后缀  .java   
			.java 是java的源代码  程序员编写的程序
	第四步:进入命令提示符 cmd
	第五步:找到 .java文件  切换目录  cd切换目录
	第六步:javac  xxx.java  编译java源代码
			如果没有语法错误,生成一个  xxx.class 字节码文件
	第七步:java  xxx    启动Java虚拟机  运行 java程序 
			java  xxx 没有.java,也没有.class 
			
终端   cd 
	ls 
	touch HelloWorld.java 


Eclipse 集成开发环境  IDE    environment

Linux命令

盘符的切换   D:
一般的目录切换:  cd  目录
查看当前目录下有哪些目录:  dir
每个目录下都有两个目录:
	.     当前目录
	..    代表上级目录
  1. Eclipse 集成开发环境
    Eclipse依赖于JDK
    第一次打开Eclipse

     Workspace  编写代码所存储的路径   一般设置在  学习 盘符里面
     	一般来说不要中文
    

    new java Project
    new Package
    new class 类名
    添加
    public static void main(String[] args){
    System.out.println(“Hello World!\n”);
    }

    点击 run 就可以运行程序了

    熟练使用Eclipse 但是不要过度依赖Eclipse

    指法
    二阳指 二指禅

     F J   键盘  定位  左右食指
     
     ASDF  JKL;
     盲打  
     眼睛看屏幕
    

java基础语法
程序: 核心是处理数据 音乐 图片 文字论文
在计算机中 或者 在硬盘 0和1

1.变量
java程序中要保存数据用变量
变量就是用来存储数据的载体
对应一块内存区域
(1)变量的声明 定义
数据类型 变量名;
变量名 也 称为 标识符
标识符的规则:
1. 由数字、字母、_ 和 $ 组成
2. 不能数字开头
3. 不能和java的关键字冲突
4. 不能重复 相同名字的变量名在同一个作用域下面不能被重复定义
5. 中文也可以作为标识符 但不建议使用
6. 建设的意义:
争取用英文 不行再用拼音
dayOfYear 首单词小写 后面的每一个单词首字母都是大写 驼峰式
chengJi

			day_of_year   下划线 
			
			争取做到见名知义
				
(2)变量的初始化
	1. 变量必须初始化之后才能使用
	2. 变量必须定义之后才能使用
	3. 变量不能重复定义

	让一个程序员发疯最简单的办法    改三次需求	
	
	变量可以存储不同的值
	
(3)变量的使用
	1. 改变变量的值
	int var = 100;
	var = 200;
	2. 取变量的值 
		System.out.println(var);//取变量的值输出到控制台
		int score = var;  //把 var的值赋值给score 


练习:
	定义变量保存你自己个人的信息
		姓名  String  name = "王导"
		年龄
		身高
		学号
		性别
		
	输出到控制台

2.基础数据类型 java中的8种基本数据类型
java里面只有两种数据类型: 基本数据类型 引用数据类型

为什么要分数据类型:
	1. 方便运算
	2. 方便存储 节省内存

取值范围 反应 存储的时候内存的大小

内存的单位:
1T = 1024G
1G = 1024MB
1MB = 1024KB
1KB = 1024B
B  字节单位
1B = 8个二进制位  二进制的数有8位

十进制:0-9组成    人
八进制:0-7组成
十六进制:0-9 a-f 组成
二进制:0 1 组成   只能识别二进制

世界上只有10种人,一种是能懂二进制的,另外一种是不懂二进制的
	
	


数值类型
	
	
		整型类型
			byte  [-128,127]   [-2^7,(2^7)-1];                 8个二进制位
			short [-2^15,(2^15)-1]  [-32768,32767]             16个二进制位
			int   [-2^31,(2^31)-1]  [-2147483648,2147483647]
			long  [-2^63,(2^63)-1] 
			
			注意:
				浮点类型都是不精确的数值
		浮点类型(小数) 存储方式和整数类型不一样  用指数记数法
			float    单精度浮点类型   取值范围  +-3.4*10^38  次方
				4字节  32个二进制位  表示最大的精度范围  6-7位
				最高位是符号位  
				1个符号位,8个指数位,23个小数位 
				
				任何一个小数都能够表示成为:
					1.1010101101 *10 ^n
				    二进制*10^n 
					
				0.5 二进制   0.1  1*(2)^-1
				0.25  二进制  0.01
				0.125         0.001
				3.125         011.001  --> 1.1001 * 10^1
				1.111111111111111111111111  ~ 2
				1/2+1/4+1/8
			double   双精度浮点类型
				8字节   64个二进制
				1个符号位 11个指数位,52个小数位   +-1.79*10^308
				表示最大的精度范围   15-16位
		
		对于一个float类型的数据  是否等于0
		float f = 0;
		(-0.0000001,0.0000001) 区间范围都表示0
		
		
	注意:
		1.在java中,直接给出的整数直接值默认是int类型,如果需要表示超出int表示范围的整数时,需要加L/l	
		2.在java中,直接给出的浮点类型数值为double类型
		如果想要表示一个直接值是float类型,那和需要在该浮点值之后加f/F
		
字符类型
		char  一个字母 或者一个汉字    
		用单引号引起来的
		2个字节  本质上是一个无符号的整数类型 [0,65535]  (2^16)-1
		16个进制  1111 1111 1111 1111 ==  0xffff
		char c = '中'
		char c1 = 20013;
		char c2 = '\u4e2d'
			都表示'中'
			底层中都是 100111000101101 这样一串二进制
		
布尔类型
		boolean   1个字节
			boolean类型只有两个取值   true  false 

			
练习:	
	编写一个程序,计算100年多少个毫秒
	再编写一个程序
		计算 10.0-7.1
		     10.0-3.9
			
boolean    1字节    8个二进制位

数据类型字节数的多少直观反应出来的是取值范围的大小
byte       1字节        取值范围  [-128,127]
		1111 1111 = -(2^6+...+2^0) = -127  负数不是这样存储
		
		0111 1111 = 2^6+..._2^0 = 64+32+..+1 = 127
	数值有正负之分
		计算机中用二进制的最高位来表示符号位
		0   表示正数
		1   表示负数

234   -->  二进制       11101010
2*10^2 + 3*10^1 + 4*10^0
位*10^权重
进制:  位*权^权重  

十进制转换成二进制  对2求余   余数从下往上

3个二进制位对应1个八进制位
4个二进制位对应1个十六进制位

在java程序中,以0x打头的数值表示十六进制的数
	0x  0X 
	          以0打头的数值表示八进制的数

0xbf  ->  1011 1111  -> 0277  -> 010111111


01010101  = 2*6+2^4+2^2+2^0  = 64+16+4+1=85
	二制转换成十进制 
		
计算机中保存数据是以补码的形式存储		

二进制分为原码、反码、补码
原码: 整数转换成二进制  最高位为符号位 0正1负   其它位为数值位
反码: 针对负数而言  符号位不变 其它位按位取反  满足正数加负数
补码:  针对负数而言  负数的补码=其原码符号位(始终不变)不变,其它位按位取反加1

正数的原码、反码、补码都是自己本身

byte
3 0000 0011 0000 0011
-3 1000 0011 1111 1101
----------------------------
1000 0110 1 0000 0000 只能保存8个二进制位 0000 0000 == 0
不等于0 所以计算机底层中存储数据从来不用原码

    0000 0011
	1111 1100
	----------
	1111 1111    1000 0000  =  0
	
	 

-2+(-4)  = -6
1000 0010  1111 1101     1111 1110
1000 0100  1111 1011     1111 1100
------------------------------------
                       1 1111 1010	  1111 1010 最高位1表示负数补码    
					                  1111 1001
									  1000 0110 = -6  用补码计算结果正确
           1111 1000  = 1000 0111 = - 7
		    
-128  如果是8个二进制位 则补码是 1000 0000
128	1 0000 0000
	0 1111 1111
	1 1000 0000
	byte 
	1111 1111
	1000 0000
	1000 0001   = -127
	
3-5
0000 0011
0000 0101

1111 1110    =  1000 0001   = -1

3+(-4)  = -1
用原码计算 结果错误
0000 0011
1000 0100 原 
---------
1000 0111  =  -7

用反码计算 结果是正确的
1111 1011 反
0000 0011
------------
1111 1110 负数   1000 0001  = -1


		
short      2字节   
char       2字节
int        4字节
long       8字节


float      4字节
double     8字节



1G硬盘  多少个byte类型的数据
		多少个int类型的数据

		
数据类型转换:

隐式类型转换:
byte char short  int  给一个取值范围之内数值是可以直接赋值的
byte->short->int->long->float->double  反之则不行
	   char->int

但是不能将一个int变量的值赋值给byte、char、short,即使是在该变量的取值范围之内也不行

强制类型转换:
	不能进行隐式转换时可以进行强制类型转换
	目标类型 变量 = (目标类型)变量;
	double d = 3.1415926734;
	float f = (float)d;//强制类型转换
	
	强制类型转换可能造成
		1.精度缺失
		2.数据溢出

提前预测数据类型,避免没必要的类型转换	

3.操作符(运算符)
(1) 算术运算符
+ - * / %
double d = 10/3;

(2) 关系运算符
	<  <=  >  >=  ==  !=
(3) 逻辑运算符
	&&  ||  !
(4) 位运算符
	&   |   ^   ~    >>   >>>   <<
(5) 赋值运算符
	=
	混合赋值  += -= *= /= %= &= |=  >>=  >>>=  <<=
(6) 三目运算符
	?:
(7) 其它
	,  ()   []  .   {}

4.语句 分支选择 条件循环语句
5.函数
6.面向对象

你可能感兴趣的:(Java)