Java基础笔记(一)

知识点

Java基础

1、什么是JDK、JRE、JVM?

JDK是Java开发工具包,它是功能齐全的Java SDK,它拥有JRE所拥有的一切,还有编译器(javac)和工具(如javadoc和jdk),它能够创建和编译程序。
    
JRE是Java运行时环境,它是运行已编译Java程序所需的所有内容的集合,包括Java虚拟机(JVM),Java类库,Java命令和其他的一些基础构件,但是它不能用于创建新程序。
    
JVM是运行Java字节码的虚拟机,JVM有针对不同系统的特定实现(windows、Linux、macOS),目的是使用形同的字节码,他们都会给出相同的结果。

2、JavaSE、JavaME、JavaEE各自是干嘛用的?

JavaSE是桌面应用程序,包含了支持Javaweb服务开发的类,并为JavaEE提供基础,主要是客户端图形界面软件的开发,JavaSE是JavaEE&JavaME开发技术的基础,学习JavaEE之前一定要学JavaSE。

JavaEE是服务器程序和分布式程序,用于服务器,桌面嵌入式环境和实时环境中使用的Java应用程序,主要用于互联网B/S架构软件的开发,所谓的B/S架构就是 浏览器/服务器 架构,目前是Java开发的主流。

JavaME是移动设备和嵌入式设备程序,已经不再实用,被Android和iOS所代替。

在这里插入图片描述

3、Java代码的编译和运行过程

1、javac编译命令 将Java源文件编译成字节码文件
2、java编译命令 运行字节码文件到JVM虚拟机

在这里插入图片描述

4、JVM跨平台

1、跨平台就是一个程序既能在windows、Linux、macOS上运行,这就是跨平台。
2、JVM 有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果。字节码和不同系统的 JVM 实现是 Java 语言“一次编译,随处可以运行”的关键所在。

5、命名规范

包名命名规范:1、全小写、反域名
类名命名规范:1、英文、有意义、大驼峰
			2、首字母大写、如果有多个单词,每个单词的首字母都要大写
变量名\函数\参数命名规范:1、小驼峰

6、请问一个源文件中,可以有多少个类?有什么约束?

可以有多个类,但是只能有一个公共类,并且公共类的名字要和文件名相同

7、八大基本数据类型及其所占字节

关键字占用内存取值默认值
byte1字节-2^7 ~ -2^7-10
short2字节-2^15 ~ -2^15-10
int4字节-2^31 ~ -2^31-10
long8字节-2^63 ~ -2^63-10L
float4字节-3.403E38 ~ 3.403E380.0F
double8字节-1.798E308 ~ 1.798E3080.0D
char2字节表示一个字符‘\u0000’
boolean1字节只有两个值false

8、为什么Java要设计四个整型

Java中能存整数的类型有四个,并且每一个占据的内存大小不一样,导致存储数据的范围不一样。
所以Java希望我们根据实际需求选择合适的数据类型,以此来节省计算机资源。

9、Java中char类型是否能存储汉字,为什么

可以 因为一个汉字所占有的内存空间是两个字节,而char的占用内存是两个字节,所以可以存储,但是只能存储一个汉字。

10、自动类型转换

在这里插入图片描述

11、强制类型转换就是欺骗编译器,依然会出现数据溢出的情况

public static void main(String[] args) {
        int  a = 129;
        byte b = (byte)a;
        System.out.println(b); // -127  
}
因为byte的字节是一个字节,大小范围控制在-2^7 ~ 2^7-1,129>127,所以发生了数据溢出的情况,科学家定义的时候是一个环,最大的数字后面就是最小的数字。

12、前置++和后置++的区别

public static void main(String[] args) {
        int  a = 10;
        int  b = a++;
        int  c = ++a;
        // 12---10----12
        System.out.println(a + "---" + b + "----" + c );
}
1、a=12,无论是前置还是后置,都会对结果进行自增1,10经过了两次自增变成了12。
2、b=10,首先将a的值赋值给b,然后a进行++,所以b=10。
3、c=11,直接将a自增1的值直接复制给c。

13、类型提升

Java中的运算结果也是有数据类型的,运算结果的类型取决于参与运算的变量,并且会自动提升为大类型。
 public static void main(String[] args) {
        int  a = 10;
        int  b = 5;
        int  c = b/a;
        System.out.println(c);
}
此时输出c的值是0.此时是将b除以a的结果赋值给c。所得的结果 0.5 但是结果的类型取决于参与运算的变量
b是int类型 ,a也是int类型 ,所以结果类型也是int,所以结果就变成了0。
然后将0赋值给C,所以输出c的时候得到0.
此时我们如果想要准确的结果 就需要 改变 b 或者 a的类型 让其能保留小数

14、请问 以下代码有问题吗 为什么?

public static void main(String[] args) {
         short  a = 20;
         a = a+5;//会出错,因为a+5就变成了int数据类型,而a为short类型,所以会出错。
         short  b = 20;
         b += 5;//没有问题,编译成字节码文件后,编译器会进行强制类型转换
}  

15、字符串拼接

+号在Java中也有两种运算意义
1、当两个基本数据类型相加时,就是数学相加。
2、当有一个是字符串时,就变成了字符串拼接。

16、字符串时基本数据类型么

字符串不是基本数据类型
Java中只提供了八大基本数据类型
1、byte   2、short   3、int   4、long   5、float   6、double   7、boolean   8、char
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值