JAVA学习 Day1(Java介绍入门、变量)

Java介绍入门、变量

1. Java介绍

Java之父:詹姆斯·高斯林。

Java:
服务器端开发 B/S
Tomcat MySQL (软件)
Linux Window MacOS (系统)

1993 - Oak
1995 - 面向市场 - 跨平台

JDK - Java Development Kit 开发工具
工具:java、javac、javadoc…
JRE
JRE - Java Runtime Environment 运行环境
工具:java
类库:Library + 写好的代码
JVM
JVM - Java Virtual Machine 虚拟机(实现跨平台的工具)
不能独立安装

电脑可以识别java工具
bin -> java的开发工具 java\javac\javadoc\jar…
conf -> 配置文件
lib -> jar包(字节码文件打包而成)

2.控制台版的JAVA HelloWorld

编辑文件:HelloWorld.java
代码:

// 单行注释
/*
	多行注释
 */
/**
	文档注释
 */
// HelloWorld.java
	/*
	  一个文件中最多只能有一个public修饰的类
	  可以有多个类
	  public修饰的这个类,名字必须和文件名相同
	*/
// public: 修饰词 - 修饰的是class
// class: 类 - 文件
public class HelloWorld {
	// 程序入口 - 主方法main - 固定写法
	public static void main(String[] args) {
		// 要执行的代码第一行
		// 打印一句话
		System.out.println("Hello World!");
	}
}

编译:用到javac工具 - cmd win+R

电脑终端(CMD)执行命令:
1.先在所在目录查找命令
2.去环境变量指定目录中寻找

运行java时提示,不是内部或外部可执行命令:
解决方案:
1.进入到工具所在目录 - 治标不治本 - 不推荐
cd -> 切换目录
d: -> 切换盘符
javac -> 编译工具
2.修改环境变量
我的电脑 -> 右键 -> 属性 -> 高级 -> 环境变量
path %JAVA_HOME%\bin

	新建变量:JAVA_HOME
	值:jdk安装目录 jdk9.0.4

运行java时提示,类无法执行或找不到类:
解决方案: 我的电脑 -> 右键 -> 属性 -> 高级 -> 环境变量
删除之前配置过的CLASSPATH(我的原因是因为之前有安装过eclipse 所以配置过CLASSPATH文件路径,导致命令找不到桌面的java文件)

3.变量

java变量:
jvm内存中分配了一块空间,存储数据
变量使用:
1.声明/定义 - 类型 变量名
2.初始化 - 第一次赋值

命名规则:
1.只能出现:英文 + 数字 + _ + $
2.不能以数字开头
3.变量名:可读性好、首字母小写、第二个单词开始首字母大写

类型:
2种数据类型:基本数据类型 + 引用类型
基本数据类型:8种
整型:byte、short、int、long
浮点型:float、double
字符型:char
布尔:boolean
基本单位:1 字节 = 8位
java虚拟机中存储基本数据类型的格式:二进制补码

20      
0   001 0100
-20
原码:1	001 0100 
反码:1  110 1011
补码:1  110 1100  - JVM

3.1 整形

byte:1个字节 = 8位 范围:-128~127
0 111 1111 -> 127
补:1 111 1111
反:1 111 1110
原:1 000 0001 -> -1

最小值:
1 000 0000
1 111 1111
1 1 000 0000 -> -128
short:2个字节 = 16位 范围:-2^15 ~ 2^15-1
int: 4个字节 = 32位 范围:-2^31 ~ 2^31-1
long: 8个字节 = 64位 范围:-2^63 ~ 2^63-1//通常用来表示时间
自动类型转换:
byte -> short -> int -> long -> float

public class Demo02Type {
	// 数据类型之 - 整型
	public static void main(String[] args){
		// 整型变量不能超出实际有效范围
		byte b = 10;

		System.out.println("b: " + b);

		short s = 128;

		int i = 2100000000;
		// 整数的直接量、字面量默认类型都是int
		// 想要表示long类型,需要追加 l/L
		long l = 21000000000l;

		// 获得当前系统时间 - 毫秒 1594025072454
		long time = System.currentTimeMillis();
		System.out.println("现在时间:" + time);
		// long = 0: 1970年1月1日 00:00:00

		s = b; // 小范围赋值给大范围,允许 - 自动类型转换
		b = (byte)s; // 大范围赋值给小范围,不允许,除非强制类型转换
	}
}

3.2 浮点型

科学计数法:
float:32位
1位符号位 8位 指数位 23位 尾数位
double:64位
1位符号位 11位 指数位 52位 尾数位
客观存在:精度缺失问题, 不能判断两个浮点数是否相等

public class Demo04Double {
	// 数据类型 之 浮点数
	public static void main(String[] args){
		double d = 5.0 - 4.9;
		// 0.09999999999999964  1/10
		System.out.println(d);
		
		d = 3.0 - 2.9;
		// 0.10000000000000009
		System.out.println(d);

		d = 3.0 - 2.5;
		// 0.5
		System.out.println(d);
		
		// float f = 3.14; // 编译错误
		// 小数字面量默认都是double类型
		// 如果要给float赋值,需要追加 f/F
		float f = 3.14f;
		System.out.println(f);
		double d1 = 3.14d;

		boolean b = true;
	}

3.3 字符型

char: 2个字节 = 16位
1111 1111 1111 1111 -> 0 ~ 2^16-1 = 65535 (范围)
‘\u0000’ ~ ‘\uffff’ (Unicode)

public class Demo03Char {
	// 数据类型 之 char类型
	public static void main(String[] args){
		char c = 'a';
		c = '中';
		c = '\u4e2d'; // Unicode编码 - 1个字符=2个字节 乱码
		System.out.println(c);

		char c1 = 48; // ASCII码 'A'=65 'a'=97 '0'=48
		System.out.println(c1);
		c1 = 0; // 空白字符
		System.out.println(c1);
		System.out.println("\u4e2d\u4e2d\u4e2d\u4e2d");
	}
}

3.4 布尔型

boolean: true false

4.运算符

4.1 算数运算符: + - * / %(取模) ++ –

 ++ i  先运算,再使用
 i ++  先使用,再运算
public class Demo05 {
	
	public static void main(String[] args){
		// 运算符左右两边类型是统一的 小范围与大范围统一
		double a = 1 + 3.14;
		System.out.println(a);

		int i = 5 / 2; // 整除
		System.out.println(i); // 2
		double d = 5 / 2.0;
		System.out.println(d); // 2.5
		System.out.println("---------");
		System.out.println(i++); // 2
		System.out.println(i); // 3
	}
}

"+"可以实现字符串的连接,同时可以实现字符串与其他数据类型的“相连”。

1.	int a = 100;
2.	String msg = "a=" + a;
3.	System.out.println(msg); // a=100
4.	msg = "" + 100 + 200;
5.	System.out.println(msg); // 结果为:100200
6.	msg = 100 + 200 + ""; 
7.	System.out.println(msg); // 结果为:300
/*
字符串在运算式中先后顺序不同
*/

4.2 赋值运算符:= += -= *= /=

	a += 2; // a = a+2(效果不同)
public class Demo06 {
	// 运算符讲解之赋值运算符&位运算符
	public static void main(String[] args){
		byte b = 10;
		// b = b + 1; // 编译错误
		// b++;
		b += 1; // 不会改变类型
		System.out.println(b);
	}
}

4.3 比较运算符:> < >= <= == !=

 结果:boolean类型

4.4 位运算符:& | ^ (逐位运算)

 二进制计算 2 ^ 4
 	0000 0010
 	0000 0100
 	0000 0110 = 6
 抑或:相同是0,不同是1
 public class Demo06 {
	public static void main(String[] args){
		int a = 2 & 4;
		System.out.println(2 ^ 4);
	}
}

4.5 逻辑运算符:&& & || |

 两边都是boolean值,结果也是boolean值
 &&: 两边都是true,结果才是true
 ||: 有一个是true,结果就是true
public class Demo07 {
	// 逻辑运算符
	public static void main(String[] args){
		int a = 10;
		int b = 20;
		System.out.println(a++ > 10 && b-- < 20); // false
		System.out.println(a); // 11
		System.out.println(b); // &:19  &&:20
	}
}

原因: && 比 & 多了一个“短路
短路:通过第一个表达式已经能确定整个结果,第二个表达式就跳过了

4.6 位移运算符:>> << >>>

 >>>:无符号右移,永远补0
 >>:补位是符号位
public class Demo08 {
	// 位移运算符
	public static void main(String[] args){
		int a = -4;
		System.out.println(a >> 1); // -2
		System.out.println(a << 1); // -8
		System.out.println(a >>> 1); // 2147483646
	}
}

4.7 三目运算符

 表达式1[boolean值] ?  值1 : 值2
 可以用来做判断
public class Demo09 {
	// 三目运算符
	public static void main(String[] args){
		int a = 21;
		double d = a <= 20 ? 3.14 : 0;
		System.out.println(d);//输出为0.0  自动类型转换
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值