栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java笔记1——Java概述与基础

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java笔记1——Java概述与基础

一、Java概述

1.JDK、JRE、JVM三者之间的关系,以及JDK、JRE包含的主要结构有哪些?
JDK(Java开发工具) = JRE +Java的开发工具(包括javac.exe,java.exe,javadoc.exe)
JRE(Java运行时环境)= JVM + Java核心类库


2.为什么要配置path环境变量?如何配置?
path环境变量是windows操作系统执行命令时索要搜寻的路径。
通过配置path环境变量,我们可以使某个程序,比如javac.exe,在任意目录下都可以运行,而不用跑到javac存在的目录下进行dos命令。

【配置方法】
JAVA_HOME = bin的上一层目录
path = %JAVA_HOME%bin


二、Java 基础 2.1 关键字和保留字
  • 关键字(Keyword):被Java语言赋予了特殊的含义,被用做专门用途的字符串(都是小写)。比如class、interface、int等。
  • 保留字(reserved word):现有Java版本尚未使用,以后可能作为关键字使用。比如goto。

2.2 标识符(Identifier)
  • 标识符:Java对各种变量、方法和类等要素命名时使用的字符序列成为标识符。(凡是自己可以起名字的地方都叫标识符)

  • 定义合法标识符规则:

    • 由26个英文字母大小写,0-9,_或$组成
    • 数字不可以开头
    • 不可以使用关键字和保留字
    • 区分大小写,长度不限制
    • 不能包含空格
  • Java中的名称命名规范:

    • 包名:多单词组成时所有字母都小写:xxxyyyyzzz
    • 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
    • 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
    • 常量名:所有字母都大写,多单词组成时,用下划线链接:XXX_YYY_ZZZ

2.3 变量与数据类型

Java中每个变量必须先声明,后使用。如下格式

数据类型 变量名 = 变量值;

变量按照数据类型进行分类:
数 据 类 型 { 基 本 数 据 类 型 { 数 值 型 { 整 数 类 型 ( b y t e , s h o r t , i n t , l o n g ) 浮 点 类 型 ( f l o a t , d o u b l e ) 字 符 型 ( c h a r ) 布 尔 型 ( b o o l e a n ) 引 用 数 据 类 型 { 类 ( c l a s s ) 接 口 ( i n t e r f a c e ) 数 组 ( [ ] ) 数据类型begin{cases}基本数据类型begin{cases}数值型begin{cases} 整数类型(byte,short,int,long)\浮点类型(float,double)end{cases} \ 字符型(char) \ 布尔型(boolean)end{cases} \ 引用数据类型 begin{cases}类(class)\ 接口(interface) \ 数组([])end{cases}end{cases} 数据类型⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧​基本数据类型⎩⎪⎪⎪⎨⎪⎪⎪⎧​数值型{整数类型(byte,short,int,long)浮点类型(float,double)​字符型(char)布尔型(boolean)​引用数据类型⎩⎪⎨⎪⎧​类(class)接口(interface)数组([])​​

数据类型大小范围/说明
byte1个字节-128~127
short2个字节 − 2 15 -2^{15} −215 ~ 2 15 − 1 2^{15}-1 215−1
int4个字节 − 2 31 -2^{31} −231~ 2 31 − 1 2^{31}-1 231−1
long8个字节 − 2 63 -2^{63} −263~ 2 63 − 1 2^{63}-1 263−1,long需要以l或L结尾,比如long l1 = 100L;
单精度float4个字节-3.403E38 ~ 3.403E38,float需要以f或F结尾,比如float f1 = 1.1F;
双精度double8个字节-1.798E308~1.798E308
char2个字节
boolean不是true就是false

float之所以比int表示范围大,是因为他的空间被分为两部分,一部分是具体的数,一部分是幂。但是精度比较小。

2.3.1 自动类型转换

数值型数据类型按照取值范围排序:byte、short、int、long、float、double。当容量小的数据类型的变量与容量大的数据类型变量做运算时,结果自动提升为容量大的数据类型。
特别的:当byte、char、short三种进行运算时,结果为int。(包括自身运算,比如byte和byte)

2.3.2 强制类型转换

强制类型转换是自动类型转换的逆运算。
使用强转符,进行截断操作,可能会导致损失精度,如下所示:

double d1 = 12.9;
int i1 = (int)d1;//截断操作
System.out.println(i1);//输出12

//没有精度损失
long l1=123;
short s1 = (short)l1
2.3.3 String类型
  • String属于引用数据类型,不是基本数据类型。
  • String可以和8种基本数据类型进行连接运算。
int number = 1001;
String numberStr = "学号";
String info = numberStr + number;//+:连接运算
System.out.println(info);//输出 学号1001

char c = 'a';
int num = 10;
String str = "hello";
System.out.println(c+num+str);//107hello
System.out.println(c+str+num);//ahello10
System.out.println(c+(num+str));//a10hello
System.out.println((c+num)+str);//107hello
System.out.println(str+num+C);//hello10a

System.out.println("* *");//输出* *
System.out.println('*'+'t'+'*');//输出93,因为char类型作运算结果为int

2.3.4 二进制

计算机底层都以补码存储数据。
二进制第一位为符号位,1为负数,0为正数。
正数原码、反码、补码都相同。
反码为原码除符号位外其余位取反。
补码为反码加一。


2.4 运算符 2.4.1 算术运算符
运算符运算说明
+正号
-负号
+加号
-减号
*
/
%取余
++自增不会改变自身数据类型
自减不会改变自身数据类型
+字符串连接String a = “a”;String b = “b”;那么a+b的结果就为"ab”
2.4.2 赋值运算符
运算符说明
=当“=”两侧数据类型不一致,可以使用自动类型转换或强制类型转换原则进行处理
+=a+=b 与 a=a+b相同,但是不会改变数据类型,比如short s = 2;s+=2;是可以的,s=s+2是不行的(因为会被转成int类型)下面的操作同理
-=a-=b 与 a=a-b相同
*=a*=b 与a=a*b相同
/=a/=b 与 a=a/b相同
%=a%=b 与 a=a%b相同
2.4.3 比较运算符
运算符说明范例结果
==相等于4==3false
!=不等于4!=3true
<小于4<3false
>大于4>3true
<=小于等于4<=3false
>=大于等于4>=3true
instanceof检测是否是类的对象“Hello” instanceof Stringtrue
2.4.4 逻辑运算符

逻辑运算符操作的都是布尔类型。

运算符说明
&逻辑与
|逻辑或
!逻辑非
&&短路与
||短路或
^逻辑异或
aba&ba&&ba|ba||b!aa^b
truetruetruetruetruetruefalsefalse
truefalsefalsefalsetruetruefalsetrue
falsetruefalsefalsetruetruetruetrue
falsefalsefalsefalsefalsefalsetruefalse
  • 逻辑与& 和 短路与&&的区别
    运算结果没区别
    但是短路与若发现一个变量为false,就不进行之后的计算,如下所示:
	int num1 = 1;
	int num2 = 1;
	boolean b = false;
	if(b&(num1++>0)){
		....
	}
	else{...}

	if(b&&(num2++>0)){
		...
	}
	else{...}
	System.out.println(num1);//2
	System.out.println(num2);//1
  • 逻辑或| 和 短路或||的区别
    运算结果没区别
    但是短路或若发现一个变量为true,就不进行之后的计算。
  • 工作中推荐使用短路与和短路或。
2.4.5 位运算符
位运算符运算范例
<<左移3<<2 = 12 --> 3*2*2 = 12
>>右移3>>1 = 1 --> 3/2 = 1
>>>无符号右移3>>>1 = 1 -->3/2 =1
&与运算6&3 = 2
|或运算6|3 = 7
^异或运算6^3 = 5
~取反运算~6 = -7
  • 位运算符操作的都是整形的数据。
2.4.6 三元运算符
  • 结构为:(条件表达式)?表达式1:表达式2;
  • 如果条件表达式为true,则执行表达式1,否则执行表达式2。
  • 表达式1和表达式2要是相同类型。
	int m = 1,n = 2;
	System.out.println(m>n?m:n);//输出2
2.5 程序流程控制
  • 1.if-else if -else(条件判断结构)

  • 2.switch-case(执行效率比if-else高)

  • 3.for循环

    for (①;②;④){
    	③;
    }
    int num = 1;
    for(System.out.println('a');num<=3;System.out.println("c"),num++){
    System.out.println("b");	
    }//输出结果abcbcbc
    

    执行过程:①➡②➡③➡④➡②➡③➡④➡②➡③➡④➡…

  • 4.while循环

  • 5.do-while循环


2.6 数组
  • 数组(Array)是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。
  • 数组是引用类型变量。
  • 创建数组对象会在内存中开辟一整块连续的空间。
  • 数组的长度一旦确定,就不能修改。
2.6.1 数组操作
//1.数组初始化
int[] arr;//声明
//1.1静态初始化:数组的初始化和数组元素的赋值操作同时进行
arr = new int[]{1001,1002,1003,1004};

//1.2动态初始化:数组的初始化和数组元素的赋值操作分开进行
String[] names = new String[5];


//2.如何调用数组的指定位置的元素
names[0] = "name";

//3.如何获取数组的长度
//属性:length
System.out.println(names.length);//输出5
2.6.2 数组元素的默认初始化值
类型初始值
整型0
浮点型0.0
char0或’u0000’,非’0’
booleanfalse
引用数据类型null
2.6.3 数组的内存解析

JVM内存分配可以分为

  • 栈(stack):存放局部变量。
  • 堆(heap):存放对象、数组。
  • 方法区:内有常量池和静态域

数组声明初始化的时候。

  • 首先会在堆中开辟一个数组长度 × times × 类型大小的空间,存放数据。
  • 接着数组变量(数组名)会存在栈中,并有一个指向他存放在堆中数据的首地址。
  • 使用引用计数算法,判断堆中的对象是否仍在使用,如果计数为0,会在之后进行垃圾回收。
2.6.4 数组中常见的异常
  • 数组角标越界的异常:ArrayIndexOutOfBoundsExcetion
  • 空指针异常:NullPointerException
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/337570.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号