02、Java语言基础
1、内存:
1.什么是内存?
内存即是一块瞬时状态的存储空间,有一定的容量.
2.内存与硬盘的区别?
内存的造价比较高,整个的计算机硬件资源是比较稀缺的.(内存得省着点用)
工业上的瓶颈,多数大容量的内存都是由多个内存条组成的.
3.计算机给程序大多的内存空间?
JAVA虚拟机(JAVA程序),默认分配的物理内存容量是计算机1/8。(省着点用)
4.计算机存储容量的基本单位?
Byte(位)8位 = 1字节(8位=1 Byte)
Byte(字节)
KB-MB-Gb-TB-PB-EB-ZB-YB-BB-Nb-DB-CB-XB(1024进制)
2、变量的概念
概念:计算机内存中的一块存储空间,是存储数据的基本单元.
整个内存就好像是酒店,当中包含了多个房间.
房间的容量(大小)不同(单人间、两人间.)。
每个房间都有一个唯一的门牌号.
每个房间的住客(类型)也不同.
酒店的房间一变量
房间的类型 —— 数据类型
房间门牌号 —— 变量名
房间的住客 —— 值
3、变量的定义流程
变量的定义流程:
1、声明:
数据类型 变量名;
int money;/开辟整数变量空间
2、赋值:
变量名 = 值;
money = 100;//将整数值赋给变量
3、注意:
Java是强类型语言,变量的类型必须与数据的类型一致。
public class TestVariable {
public static void main(String[] args) {
//声明变量,语法:数据类型变量名;
int money; //在内存中开辟了一块整数空间
// 赋值,语法:变量名=值;
money = 100;//将100赋值给money变量空间
System.out.println(money);//打印变量中的值
System.out.println("money");//打印文本
}
}
4、变量的定义方式
声明变量的3种方式:
1、先声明,再赋值:【常用】
数据类型 变量名;
变量名=值;
2、声明并赋值:【常用】
数据类型变量名 = 值;
3、多个同类型变量的声明与赋值:【了解】
数据类型 变量1 ,变量2,变量3 = 值3,变量4,变量5 = 值5;
//声明并赋值
int age = 10;//将声明的语法与赋值的语法合二为一
System.out.println(age);
//同时声明多个同类型变量
int a, b, c, d = 44, e = 55;
a = 11;
b = 22;
c = 33;
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(e);
5、数据类型
Java中的变量具有严格的数据类型区分。(强类型语言)
在Java语言中,任何一个值,都有其对应类型的变量。

5.1、基本数据类型(整数)
注意: int为整数的默认类型,如需为long类型赋值较大整数时,需在值的后面追加“L”

//数据类型变量名=值;
byte b = 127;// -128~127(共计256个整数)
System.out.println(b);
short s = 32767;//-32768~ 32767(共计65536个整数)
System.out.println(s);
int i = 2147483647;//-2147483648~ 2147483647(共计42亿多个整数)
System.out.println(i);
//Java中所有的“整数字面值"的默认类型是int,当整数字面值超过int的取值范围时,则提醒"”过大的整数"
long l1 = 2147483648L;//显示告知JVM,此值为long类型
long l2 = 9223372036854775807L;//-9223372036854775808L~9223372036854775807L
System.out.println(l1);
System.out.println(l2);
5.2、基本数据类型(小数)

浮点型数值采用科学计数法表示:
2E3 等价于2_* 10^3(结果:2000.0)
3E5 等价于3 *10^5(结果:300000.0)
// float单精度浮点型、double双精度浮点型
double d = 1.2;
System.out.println(d);
double d2 = 1;
System.out.println(d2);
float f = 1.5F;//任何"小数字面值"默认类型都是double,如果要存储到float变量中,需显示追加"F1
System.out.println(f);
//科学计数法
double d3 = 2E3;//2*10^ 3
System.out.println(d3);
double d4 = 2E7;//2*10^ 7 20000000.0
System.out.println(d4);
float f2 = 5E4F; //5*10^4追加F代表float
System.out.println(f2);
//取值范围的差异
// foat正数取值范围:0.00o00000.00003000000000000000000014F~34000000000000000000000000000000000000.0F
float floatMin = 0.0000000000000000000000000000000000000000000014F; //float的最小正数
float floatMax = 340000000000000000000000000000000000000.0F; //float的最大正数
System.out.println(floatMin);
System.out.println(floatMax);
// fioat负数取值范围:-34005000300030000000000.,0F~-0.000000000000000000000000000000000000000000014F
float floatMin2 = -340000000000000000000000000000000000000.0F;//个十百千万亿兆京垓。。。。。那由他
float floatMax2 = -0.0000000000000000000000000000000000000000000014F;
System.out.println(floatMin2);
System.out.println(floatMax2);
// double正数取值范围:
double doubleMin = 4.9E-324;
double doubleMax = 1.7E308;
System.out.println(doubleMin);
System.out.println(doubleMax);
5.3、基本数据类型(布尔)

可直接赋值 true / false
也可赋值一个结果为true / false的表达式
注意:Java中的boolean不能参与算数运算
boolean b1 = false; // true false
System.out.println(b1);
boolean b2 = 5 > 4;
System.out.println(b2);
5.4、基本数据类型(字符)
ASCII(American Standard Code for Information Interchange)美国信息交换标准代码。
基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。
ASCII是最通用的信息交换标准,为英文字符设定了统一并且唯一的二进制编码。

Unicode(万国码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。
它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求,(其中包含了ASCII编码)。


Unicode中每个字符都对应一个二进制整数,可以使用多种方式赋值。
字符赋值: char c1 = 'A'; (通过 ' ' 描述为字符赋值)
整数赋值: char c2= 65; (通过十进制数65在字符集中对应的字符赋值)
进制赋值: char c3 = '\u0041’; (通过十六进制数41在字符集中所对应的字符赋值)
char c1 = 'A'; //字符赋值,原生、基本的赋值方式(常用)
System.out.println(c1);
char c2 = 65; //整数赋值(十进制)
System.out.println(c2);
char c3 = '\u0041'; //进制赋值(十六进制)
System.out.println(c3);
6、转义字符
如果需要在程序中输出一个单引号字符,该如何完成?

为了解决这一问题,Java采用了转义字符来表示单引号和一些特殊符号。

char ch = '\'';
System.out.println(ch);
System.out.println("\"");
System.out.println("Hello\tWorld");
System.out.println("Hello\nWorld");
System.out.println("\\");
7、引用数据类型(字符串)

String类型的字面取值:
String strl =“你好";
String str2 = "Hello";
String str3 = "分布式架构师";
String str4 = "Java Engineer";
8、自动类型转换
两种类型相互兼容。
目标类型大于源类型。
//整数–整数
short s = 123;
int i = s;//将源类型值存入到目标类型变量中(自动类型转换)System.out.println(i);
byte b = 100;
short s2 = b;//自动类型转换System.out.println(s2);
//小数-小数
float f = 100.0F;
double d = f;
System.out.println(d);
//小数–整数
int i2 = 100;
double d2 = i2;
System.out.println(d2);
//字符–整数
char c = 'A';
int i3 = c;
System.out.println(i3);
//字符-小数
char c2 = 'a';
double d3 = c2;
System.out.println(d3);
//boolean无法与其他类型进行转换
boolean bool = true; //true | flaseint
// int i4 = bool;//不兼容的类型
9、强制类型转换
两种类型相互兼容。
目标类型小于源类型。

(1)整数长度足够,数据完整。
例: int i = 100; byte b = (byte)i; // b = 100
(2)整数长度不够,数据截断。
例: int i = 10000; byte b = (byte)i ; // b = 16(符号位变化,可能变为负数)
(3)小数强转整数,数据截断。
例: double d = 2.5; int i = (int)d; // i = 2(小数位舍掉)
(4)字符整数互转,数据完整。
例: char c = 65; int i = c; // i = 65
(5)boolean的取值为true/false,不可与其他类型转换。
//长度足够,数据完整
short s = 123;
byte b = (byte) s;//强制类型转换(数据完整)
System.out.println(b);
//长度不够,数据截断
short s2 = 257;
byte b2 = (byte) s2;//强制类型转换(数据截断)
System.out.println(b2);
short s3 = 130;
byte b3 = (byte) s3;
System.out.println(b3);
//小数强转整数
double d = 2.999;
int i = (int) d;
System.out.println(i);
//字符强转整数
char c = 'A';
int i2 = c; //自动类型转换
System.out.println(i2);
char c2 = (char) i2;//强制类型转换
System.out.println(c2);
//字符与整数转换的注意事项
short s4 = -1;// -32768~32767
char c3 = (char)s4;//强制类型转换
System.out.println(c3);
10、运算符
10.1、算数运算符

int a = 10;
int b = 3;
System.out.println(a / b);//求商=3
System.out.println(a % b);//求余=1
double d = 10.0;
int c = 3;
System.out.println(d / c);//求商3.33.......
int num1 = 10;
num1++;//自增1
System.out.println(num1);
int num2 = 10;
num2--;//自减1
System.out.println(num2);
//前++:先++,再打印自增后的值
//后++︰先打印当前值,再++
int num3 = 5;
System.out.println(++num3);
System.out.println(num3);
//前++︰先++,再赋值
//后++︰先赋值,再++
int num4 = 100;
int num5 = num4++;
System.out.println(num5);
System.out.println(num4);
10.2、赋值运算符

int a = 10;//赋值运算符
a+= 5;//在a基础上+5a = a + 5;
System.out.println(a);
int b = 20;
b-= 3;// b = b - 3;
System.out.println(b);
int c = 30;
c %= 4;// c = c % 4;
System.out.println(c);
10.3、关系运算符

int a = 10;
int b = 6;
System.out.println(a > b);
System.out.println(a < b);
System.out.println(a >= b);
System.out.println(a <= b);
System.out.println(a == b);
System.out.println(a != b);
10.4、逻辑运算符

int javaScore = 100;
int webScore = 99;//比较两者是否相等
System.out.println(javaScore == webScore);
//别分判断二者是否为满分
System.out.println(javaScore == 100);
System.out.println(webScore == 100);
//一次性判断二者是否均为满分
// false
//true &&false 两个表达式同时为真
System.out.println(javaScore == 100 && webScore == 100);
//一次性判断二者是是否有一个满分
// true
//true || false
System.out.println(javaScore == 100 || webScore == 100);
boolean result = javaScore == 100;
//Java的成绩是满分吗?
System.out.println(result);//true
//Java的成绩不是满分吗?
System.out.println(!result);//false
10.4、三元运算符

//1.判断
//2.赋值
//布尔表达式 ? 值1:值2
int javaScore = 100;
String result = javaScore == 100 ? "恭喜" : "加油";
System.out.println(result);
int webScore = 99;
int result2 = webScore == 100 ? 666 : 111;
System.out.println(result2);
11、表达式

12、自动类型提升
进行算数运算时:
两个操作数有一个为double,计算结果提升为double。
如果操作数中没有double,有一个为float,计算结果提升为floato。
如果操作数中没有float,有一个为long,计算结果提升为longo
如果操作数中没有long,有一个为int,计算结果提升为int。
如果操作数中没有int,均为short或byte,计算结果仍旧提升为int。
特殊:任何类型与String相加(+)时,实为拼接,其结果自动提升为String
double d1 = 10.0;
int i1 = 5;
double d2 = d1 + i1;
System.out.println(d2);
float f1 = 5.0F;
short s1 = 20;
float f2 = f1 + s1;
System.out.println(f2);
long l1 = 100;
byte b1 = 50;
long l2 = l1 + b1;
System.out.println(12);
int i3 = 123;
short s3 = 456;
int i4 = i3 + s3;
System.out.println(i4);
short s4 = 321;
byte b3 = 111;
int s5 = s4 + b3;
System.out.println(s5);
//特殊: String的字符串拼接
String str = "Hello";
int i5 = 123;
String str2 = str + i5;
System.out.println(str2);
int javaScore = 100;
System.out.println( "Java的成绩是:"+javaScore );
13、控制台
程序运行中,可在控制台((终端)手动录入数据,再让程序继续运行。
导包语法: import包名.类名;//将外部class文件的功能引入到自身文件中。
使用顺序:
(1)导入java.util.Scanner。
(2)声明Scanner 类型的变量。
(3)使用Scanner类中对应的方法(区分类型):
nextInt() ;//获得整数
nextDouble();//获得小数
next() ;//获得字符串
next().charAt(O);//获得单个字符
注:如果输入了不匹配的数据,则会产生java.util.InputMismatchException
///package 必须在源文件的首行
package com.huiruan;
import java.util.Scanner; //1.引入外部文件
public class TestScanner {
public static void main(String[] args) {
//2.声明Scanner类型的变量
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数");
//3.使用
int i = scanner.nextInt();//控制台获取一个整数
System.out.println("您输入的值为: " + i);
Scanner input = new Scanner(System.in);
System.out.println("请输入值:");
int i1 = input.nextInt();//接收整数
double d = input.nextDouble();
//接收小数
String s = input.next();//接收字符串
char c = input.next().charAt(0);//接收字符(接收一个完整的字符串,获取其中的第一个字符)│
System.out.println("整数:" + i1);
System.out.println("小数:" + d);
System.out.println("字符串:" + s);
}
}
14、总结
(1) 变量:
计算机内存中的一块存储空间,是存储数据的基本单元。
(2)数据类型:
基本数据类型(8种)、引用数据类型(String、数组、对象)。
(3)运算符:
算数运算符、赋值运算符、关系运算符、逻辑运算符。
(4)类型转换:
自动类型转换、强制类型转换。
(5)类型提升:
数字间的常规类型提升,字符串的特殊类型提升。
(6)控制台录入:
引入工具包、声明Scanner、调用对应方法接收控制台录入数据。

浙公网安备 33010602011771号