【JavaSE基础】Java基础知识

Java基础知识

1、Java第一个程序

public class TestDemo{
	public static void main(String[] args){
		System.out.println("hello");
	}
}

2、Java代码书写规则

1、 一个Java源文件只允许出现一个public公有类,而且这个公有类的名字必须和文件名相同。
2、Java命名规范:
类名字和成员名字都遵守驼峰命名法规范

  • 2.1 类名称每个单词首字母要大写,其余字母小写;
  • 2.2 类的成员(属性和方法)第一个单词字母全部小写,其余单词首字母大写,其余字母小写;
  • 2.3 代码命名上禁止使用拼音;
  • 2.4 Java命名只允许字母,数字,下划线,$(不允许以数字开头,建议大家只用字母和下划线);
  • 2.5 类和函数的左括号不换行,右括号单独换行;
  • 2.6 Java工程定义的包,一般遵循 com.企业.项目组.模块

3、本地编译型语言和脚本语言之间的区别

Php Java 都属于脚本语言(一处编译,处处运行);
C/C++都属于编译型语言(在不同操作平台上使用,编译一次使用一次);
Javac -> java 生成字节码文件.class 。用于命令的使用;

4、Java 一处编译处处运行的原因

所有.java 源文件经过编译形成一个字节码文件,而后在计算机上执行,但是解释程序的计算机不是一台真正意义上的计算机,而是一台由软件和硬件模拟出来的计算机——Java 虚拟机。Java 中的所有程序都是在 JVM 上运行的。 JVM 读取并处理经过编译的与平台无关的字节码文件。Java 解释器负责将 Java 虚拟机的代码在特定的平台上运行。

在这里插入图片描述

JVM 基本原理:

在这里插入图片描述

5、进制转换

首先,在计算机世界所存储的信息都是由二进制 0 和 1 来表示,其中每一个 0 或 1 被称为一个位(b),与 之对应的 B 表示的是字节数。

十进制的取值范围(0~9);
八进制(0~7) ;
十六进制(09,af);

进制的表现形式(以我们常用的十进制数 10,14 举例):
二进制表现形式:1010 1110 ;
八进制表现形式:以数字 0 标识开头的数字表示的是八进制数:012、016 ;
十进制表现形式:10、14;
十六进制表现形式:以 0x 标识开头的数字表示的是十六进制数。0xa、0xe;

进制之间转换:
二进制转换成十进制:1010->0100+1*101+0102+1*103; 10 称为权数;
二进制转八进制:1010->1010->12;
二进制转十六进制:1110->e;

6、Java 标识符

Java 标识符由数字,字母和下划线(_),美元符号($)组成。在 Java 中是区分大小写的,而且还要求首 位不能是数字。最重要的是,Java 关键字不能当作 Java 标识符。

主要的关键字有:

在这里插入图片描述

7、Java 数据类型

在这里插入图片描述

1、 内置数据类型:

内置数据类型包含 8 种基本数据类型:6 种数值型,1 种布尔类型和 1 种字符型。

1.1 内置数据类型的存储方式:

在这里插入图片描述

1.2 内置数据类型的取值范围:

前提:java 中不能使用未初始化的局部变量。

在这里插入图片描述

2、基本数据类型:

在这里插入图片描述

注意:Java 中的 boolean 变量取值只能是 true 和 false,整数和 true 或者 false 不能等价即不能和其他类 型进行转换。
在 Java 当中 char 类型占用两个字节,是因为 java 采用的不是 ASCII 码系统编码,而是 Unicode 编码。

注意:数据的溢出
在这里插入图片描述

3、浮点数

浮点数就是小数,对应的默认数据类型就是 double。
float num = 10.2f;
浮点数在除法中的应用:

public static void main(String[]args){ 
	intx=9; 
	inty=5; 
	System.out.println((double)(x/y));//1.0
	System.out.println((double)x/y);//1.8
}
4、引用类型变量:

怎么理解引用数据变量呢?
首先,基本数据类型存储的是值,而引用类型指向一个对象,把指向对象的数据类型称为引用数据类型。
例:String str = new String(“hello”);

5、基本数据类型之间的转换规则:
5.1 隐式类型转换规则

当大类型数据存放在小类型变量当中时,会发生隐式类型转换,或者说当精度低的数据类型存放到精度高的数据变量当中同样也会发生隐式类型转换。

在这里插入图片描述

//类型的提升 
class TestDemo{ 
	public static void main(String[]args){ 
		shorta=10; 
		intb=a;//发生类型的隐式转换 
	} 
}
5.2 显示类型转换规则

5.2.1 如果要把大类型的数据存到小类型的变量当中势必会发生数据的截断,精度降低的现象。或者发生 short 类型和 char 类型之间转换时,会发生类型的强转,强制转换也称为显示类型转换,一般参与强转操作符()进行转换。

//类型的缩减 
class TestDemo{ 
	public static void main(String[]args){ 
		longa=100L; 
		intb=(int)a; 
	} 
}

5.2.2 那么为什么 byte 类型和 char 类型之间转换需要进行强制转换呢?byte 类型占用 1 个字节大小,而 char 类型占用 2 个字节,按理说 byte 转成 char 类型不需要强转。

在这里插入图片描述

事实也是错误滴! 原因是因为 java 中的数据类型从 byte 转成 char:byte->int->char
那么 char 类型转换成 short 类型呢?

在这里插入图片描述

两者都占 2 字节,但是无论从 short 类型转成 char 类型还是 char 类型转成 short 类型都必须强制 转换。在 java 中只有 char 类型是无符号整型,其余都是有符号类型。由此可知 short 和 char 类型变量 虽然他们所占字节数相同,但是他们之间表示的范围却不同,char 类型保存 16 位整数而 short 类型保 存的是 15 位整数。

5.2.3 强转越界

int a = 128; 
byte b = (byte)a; 
System.out.println(b);//-128

5.2.4 类型相加(低于 int 字节数的基本数据类型之间)

byte a = 10; 
a = a + 10;//error a+10 将等号右边的类型隐式提升成 int 类型,所以将 int 类型赋值给 byte 类型会发生类型的强制转换 
a += 10;//right +=符号没有发生类型的转换
byte c = 10; 
byte d = 10; 
c = c + d;//仍然会发生问题。c+d 的结果会隐式转成 int 类型。这里也需要进行强转 

总结:低于 int 字节数的基本数据类型,涉及到运算时,都会发生隐式类型提升,提升为 int 类型。

8、Java 中的常量

Java 中一般用关键字 final 定义的量是常量。
常量分为:字面常量,字符常量,字符串常量。
常量名一般采用大写的方式。

//字面常量的定义方式使用 final 关键字 
final int NUM = 10; 
//字符常量 
char a = ’a’; 
//字符串常量 
String s = ”hello world”;

9、Java 注释

1、 //:单行注释 ;
2、 /* …*/:块注释 ;
3、 /** … */文档注释 ;

10、Java运算符

1、Java 运算符

在这里插入图片描述

1.1 赋值运算符:

Java 中, “=” 被称为赋值运算符,它的作用是设置变量的值,即将一个数据赋给一个变量,实际上是将特定的 值写到变量所对应的内存单元中。赋值运算符是双目运算符,因为 “=” 两边都要有操作数。“=” 左边是待赋值的 变量,右边是要赋的值。
除了“=”基本赋值运算符外,另外还有几个复合赋值运算符:+=、-=、*=、/= 和 %=;五个由位运算符和赋值 运算符组成的复合赋值运算符:<<=、>>=、&=、|=、和 ^=。

int a = 10;
int b = 20;//赋值运算符
int sum = a + b;//a+b 算数运算符
sum += 10;//复合赋值运算符
1.2 算术运算符

Java 提供的算术运算符包括:加(+)、减(-)、乘(*)、除(/)和取余(%)。算术运算符是双目运算符。利用算术运算符连接起来的式子称为算术表达式。
1.2.1 自增、自减运算符++、- -
Java 中还另外提供了两个用于算术运算的单目运算符:自增运算符++和自减运算符- -。其功能是使变量的 值增 1 或减 1。使用这两个运算符,可以让程序更为简化、更容易阅读。++和- -运算符有一个特点,就是它们 既可以位于变量名的左边(称为前自增、前自减),又可以位于变量名的右边(后自增、后自减),但结果却是 不一样的。
++和- -运算有以下四种情况:
(1) i++:使用 i 之后,i 的值加 1,即先取值,后自加。等价于 i=i+1。
(2) ++i:先使 i 加 1,然后再使用 i,即先自加,后取值。等价于 i=i+1。
(3) i- -:使用 i 之后,i 的值减 1,即先取值,后自减。等价于 i=i-1。
(4) - -i:先使 i 减 1,然后再使用 i,即先自减,后取值。等价于 i=i-1。
注意:++和–运算符只能用于变量,不能用于常量和表达式。因为++和- -蕴含着赋值操作。++和- -运算符经 常用于循环程序设计中。
试计算一下输出结果:

int i = 0; 
int tmp1 = i++;
int tmp2 = ++i; 
i++; 
int tmp 3 = i; 
++i; 
int tmp4 = i; 
System.out.println("tmp1: "+tmp1); 
System.out.println("tmp2: "+tmp2); 
System.out.println("tmp3: "+tmp3); 
System.out.println("tmp4: "+tmp4);
1.3 关系运算符

关系运算符,因为关系运算实际上是比较大小的运算。Java 提供了 6 种关系运算符:>、>=、<、<=、==、!=。 前 4 种优先级相同,且高于后面的两种。
关系运算符进行比较返回 boolean 值。

1.4 逻辑运算符

Java 提供了 3 种逻辑运算符,&&(与)、||(或) 、!(非)。
a && b:只有 a 与 b 都为 true,结果才为 true,否则为 false。
a || b:只有 a 与 b 都为 false,结果才为 false,否则为 true。
!a:与 a 的值相反。

int i = 0; 
if(i++==0 || i++>0){ 
	System.out.println("|| :"+i); 
	return; 
} 
if(i++==0 && i++>0){ 
	System.out.println("&& :"+i); 
	return; 
}
1.5 按位运算符

位运算符的作用在于对整数数值的二进制表示进行运算。
(1) 按位求反运算符~
对操作数的二进制数据的每一个二进制位都取反.
即 1 变成 0,而 0 变成 1。
如`8(…00001000)的结果为-9(1111…11110111 负数的计算按位取反+1)。

int a = 5; 
a = ~a + 1; 
System.out.println(a);

(2) 位与运算符&
参与运算的两个操作数,相应的二进制数位进行位与运算。
如 5&11(0101&1011)结果为 1。
(3) 位或运算符|
参与运算的两个操作数,相应的二进制数位进行位或运算,两个位上一个有 1 则为 1。
如 5|11(0101&1011)结果为 15。
(4) 位异或运算符^
参与运算的两个操作数,相应的二进制数位进行位异或运算,两个位一样则为 0,否则为 1。
如 5^11(0101&1011 结果为 14。
(5) 保留符号位的右移运算符>>
将一个操作数的各个二进制位全部向右移若干位,这个位数由右操作数来决定,移到右端的低位被舍弃, 左边空出的位全部用最高位的符号位来填充。
如 5>>1 结果为 2。-9>>1,结果为-5。
(6) 不保留符号位的右移运算符>>>
与>>不同的是,>>>右移后左边空出的位用 0 填充。
如 5>>>1 结果为 2。-9>>>1,结果为 2147483643。
(7) 左移运算符<<
将一个操作数的所有二进制位向左移若干位,右边空出的位填 0。若高位左移后溢出,则舍弃溢出的数。
如 5<<1 结果为 10。

2、 运算符的优先级:

在这里插入图片描述

3.、Java 中的语句:

程序控制可以定义为对程序语句的执行顺序进行的规定。 有三种结构:
(1) 顺序结构
(2) 分支结构
(3) 循环结构
为了实现程序执行点的流程控制,Java 提供了如下的分支、循环语句:
(1) 分支控制语句包括:if-else、switch-case。
(2) 循环控制语句包括:while、do-while 和 for。
(3) 跳转语句:break、return 和 continue。
(4) return 语句和 System.exit()方法
return 语句用来从当前方法中退出,返回到调用该方法的语句处,并从紧跟该语句的下一条语句继续执行。 如果在main()方法中执行return语句,则使程序执行返回到Java运行系统, 因为Java运行系统调用了main() 方法。
要想从程序的任意地方直接一步到位地退出程序,而不是返回到调用该方法的语句处,可以使用 System.exit(0)方法。
(5) java 异常中 try 块中 return;语句和 System.exit(0);语句之间是有区别的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值