Java基础(一)

1.Java语言特性:

  • 面向对象:把问题当成一个人去处理,符合人的思维习惯。
  • 可移植性:Java源程序只需要编译一次,就可以在多个操作系统上运行,实现Java跨平台。这个过程主要使用JVM完成。
  • 健壮性:Java有GC机制,不需要像C++那样,手动关闭资源,如果忘记关闭资源将导致内存泄露,内存溢出。
  • 简单性:C和C++语言需要指针直接操作内存,Java不需要指针,或者说, JAVA的指针不允许人为使用(Java的底层是由C++实现的),从外部表现来看,Java像是屏蔽了指针;Java 不支持多继承,C++支持多继承,功能强大但难维护…
  • 多线程
  • 安全性:异常处理机制、强制类型转换需要符合规则等…

2.Java的加载和运行

  • 编译:检查是否有语法错误,如果没有语法错误,Java源程序将会被编译成Java的.class 文件。
    在DOS命令框中:javac <java源程序的路径>
  • 运行:将.class文件加载到累加载器,类加载器会在磁盘上寻找该.class文件,找到后将其导入JVM,JVM将其翻译成机器码文件,机器码文件与操作系统进行交互。
    在DOS命令框中:java <X.class文件的名字:X>

3.Java注释

  • // :单行注释
  • /* */ :多行注释
  • /** */ :javadoc注释 ---- 专业的java多行注释,会被javadoc.exe工具解析,提取,写进帮助文档中。

4.public class 和 class 区别

  • 一个Java源文件中可以定义多个class
  • 一个Java源文件中 public 的 class 不是必须的
  • 一个class会定义生成一个xxx.class字节码文件
  • 一个Java 源文件当中定义 public 的类的话,只能有一个,而且该类名必须和Java源文件名一致。
  • 每一个class当中都可以编写main方法,都可以设置程序的入口,想执行x.class 中的方法–java x ,必须得有main方法,否则报错,找不到程序入口。

5.数据类型的作用

开辟空间。

6.字符编码是什么?

:一种映射表,清楚地展示某种文字/字符和二进制之间的映射关系。
eg.ASCII 、 UTF-8 、Unicode 、GBK…

推荐链接:https://blog.csdn.net/qq_43471489/article/details/123882328

7.强制类型转换的原理

什么时候加强转:
大容量转小容量:强制类型转换。byte,short,char直接赋值,在范围内不需要强转,如果范围超了,需要强转。

//直接赋值
//范围内:
byte b = 100;//编译通过。
//范围外:
byte x = (byte)198;//需要强转,结果x=-58
//非short char byte:
//错误写法
int x = 2100000000L; //2100000000在int的范围里--编译报错,必须强转
//正确写法
int x =(int) 2100000000L; 
//间接赋值
byte a = 10;
short b = 5;
//错误写法
short x = a + b;//间接赋值,需要强转。
//正确写法
short x = (short) (a + b);

强转输出的值:
数字转成二进制,根据限制字节数,多余的不要。此时是补码,补码转原码,转二进制,输出

注意:字节数二进制最高位是符号位。
eg.
int x =(int) 4L;
long类型:
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000100
转换成int类型:
00000000 00000000 00000000 00000100
x=4;

如果在小容量的范围外:造成精度损失
eg.
int x =(int) 2147483648L;
long类型:
00000000 00000000 00000000 00000000
10000000 00000000 00000000 00000000
转换成int类型:
10000000 00000000 00000000 00000000
x=-2147483648

精度损失
注意:10000000 00000000 00000000 00000000 最高位是1,表示是负数,所以是负数的补码,把补码转回原码:(负数补码转原码:先(-1)再全反转得到原码绝对值,计算成10进制,加负号),原码绝对值:10000000 00000000 00000000 00000000 ,那么负数:-2147483648。

8.基本数据类型转换

  • 8种数据类型除了boolean其他七种都可以互相转换
  • 小容量->大容量:自动类型转换;大容量->小容量:强制类型转换,可能会精度损失。
  • byte<short/char<int<long<float<double

注意:浮点型不管占用多少字节,都比整数型容量大;char和short可表示的种类数量相同,但是char可以取更大的正整数。

  • byte short char 混合运算,先各自转换成int类型再做运算
  • 多种数据类型混合运算,先转成容量最大的那种类型再做运算。

9.两个值的交换

  • 第三个变量当中间值
public static void swap(int x,int y) {
 		int temp = x;
        x = y;
        y = temp;
    }
  • 通过相加方式-----当数值很大的时候,16进制的求和运算可能造成数据的溢出
public static void swap(int x,int y) {
        x = x + y;
        y = x - y;
        x = x - y;
    }
  • 异或

    位异或运算符(^)有这样的一个性质,就是两个整型的数据x与y,有:
    (x ^ y ^ y) == x这说明,如果一个变量x异或另外一个变量y两次,结果为x。通过这一点,可以实现交换两个变量的值。

public static void swap(int x,int y) {
        x = x ^ y;
        y = x ^ y;
        x = x ^ y;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值