内存等硬件基础、变量、运算符(Java学习笔记一)

计算机硬件基础


冯诺依曼

在这里插入图片描述


中央处理器(CPU)

由控制单元和算数逻辑单元组成

  1. 控制单元:控制和协调其他组件的动作;
  2. 算数逻辑单元:完成数值运算和逻辑运算;

时钟

每台计算机内部都有一个内部时钟,以固定速度发射电子脉冲。时钟速度越快,在给定时间段内执行的指令就越多。计量单位是赫兹(Hz),1Hz相当于每秒一个脉冲。随着CPU速度不断提高,目前以千兆赫兹(GHz)来表示。


IT定律

  1. 摩尔定律:等价买到的电脑性能,每隔18-24个月会翻一倍以上。
  2. 安迪-比尔定律:”比尔拿走了安迪的东西“,软件厂商吃掉硬件提升带来的好处。
  3. 反摩尔定律:IT公司今天和18个月之前卖掉同样多的相同产品,那他的营业额会降一半。

存储设备

  1. 磁盘驱动器。硬盘用以永久的保存数据和程序。
  2. 光盘驱动器。CD和DVD。
  3. USB闪存驱动器。用于存储和传输数据。

内存

计算机中最小的存储单位,比特(bit),值为0/1。

计算机中最基本的存储单元,字节(byte),一个字节由八个比特构成。

内存采用半导体存储单元,包括随机存储器(RAM),只读存储器(ROM),以及高速缓存(CACHE)。

RAM断电后数据不在保存,可读也可写;ROM存储计算机BIOS等基本程序,只可读不可写;

内存一个程序和他的数据在被CPU执行前必须移动到计算机的内存中。


操作系统

  1. 控制和监视系统的活动;
  2. 分配和调配系统资源;
  3. 调度操作;

万维网

常简称Web,分为Web客户端和Web服务器程序。让Web客户端访问Web服务器上的页面。每个页面由“统一资源标识符(URI)”标识。通过超文本传输协议(HTTP)传送给用户。

互联网>英特网>万维网


Java(sun公司)


软件

软件是一系列按照特定顺序组织的计算机数据和指令的集合。分为系统软件和应用软件。

人机交互方式分为图形化界面(GUI)和命令行方式(CLI)


计算机语言

第一代语言:机器语言。二进制代码形式存在。

第二代语言:汇编语言。使用助记符表示机器指令。

第三代语言:高级语言。Java、Python…


Java语言特点

特点一:面向对象

  • 封装、继承、多态

特点二:健壮性(例如,垃圾回收机制)

特点三:跨平台性(JVM)


核心机制

  1. Java虚拟机(JVM);
  2. 垃圾回收机制(GC);

JDK、JRE、JVM

JDK>JRE>JVM

  1. JDK:Java开发工具包。包含Java开发工具,例如编译工具、打包工具等,此外也包括了JRE。
  2. JRE:Java运行环境。包括JVM和核心类库。

标识符

凡是自己可以取名字的地方都叫做标识符。

命名规则
  1. 不能以数字开头;
  2. 不能使用关键字和保留字;
  3. 区分大小写;
  4. 不能包含空格;
命名规范
  1. 包名:所有字母小写;
  2. 类名、接口名:多单词首字母分别大写(驼峰);
  3. 变量名、方法名:第一个单词首字母小写,之后的单词首字母大写;
  4. 常量:所有字母大写,且用下划线分割;

变量

变量是程序中最基本的存储单元。包含变量类型、变量名和存储的值。

变量用于在内存中保存数据。

类型
  1. 基本数据类型

    • 数值型
      • 整数类型:int、short、long、byte
      • 浮点类型:float、double
    • 字符型
    • 布尔型
  2. 引用数据类

    • 类:class
    • 接口:interface
    • 数组:[]
类型占用存储空间表数范围
byte1字节 = 8bit(位)-128-127
short2字节-215-215-1
int4字节-231-231-1
long8字节-263-263-1
类型占用才存储空间表数范围
单精度float4字节7位有效数组
双精度double8字节15位有效数字

(通常使用double。定义float变量时,变量要以”f“或”F“结尾)

字符型char:(1字符=2字节)定义char型变量通常使用一对单引号。

注意:
char e1 = 97; //此时97为ASCII码为97对应的字符
System.out.println(e1);//输出‘a’

char e2 = '5';
int e3= e2;//自动类型转换为ASCII码是‘5’对应的整型数字
System.out.println(e3);//输出53

布尔型boolean:true或false,常用在循环语句。


类型转换

1.自动类型提升:(小到大)

byte、char、short->int->long->float->double

当容量小的与容量大的变量做运算时,结果自动提升为容量大的数据类型。特别地,byte、char、short三种做运算时,结果为int。

2.强制类型转换:(大到小)

需要使用强转符:()。可能导致精度损失。

整型常量默认为int型,浮点型常量默认为double型。


按位置分类
  1. 成员变量

    • 实例变量(不以static修饰)
    • 类变量(以static修饰)
  2. 局部变量

    • 形参(方法、构造函数中定义的变量)

    • 方法局部变量(在方法内定义)

    • 代码块局部变量(在代码块内定义)


字符串类型

String类型,不是基本数据类型,属于引用数据类型,使用双引号进行定义(不能直接赋值数字)。

String类型可以和8种基本数据类型做运算,且运算只能是连接运算,结果也是String类型。

例:String转int

String hello = "123";
int a = Integer.parseInt(hello);

进制

二进制:以0b或0B开头;

八进制:以0开头;

十六进制:以0x或0X开头,A-F不区分大小写;

互相转换:
Integer.toBinaryString();
Integer.toOctalString();
Integer.toHexString();

Java整数常量默认是int类型,当用二进制定义整数时,其第32位是符号位;当long型时,第64位是符号位。

二进制整数有三种形式:原码、反码、补码。

  • 正数的原码、反码和补码相同
  • 负数反码为原码除符号位依次取反,补码为反码加一

计算机底层都以补码的方式来存储数据。


运算符

算数运算符

+、-、*、/、%、++、–、+(连接)

负数取余:
int m1 = -12;
int m2 = -5;
System.out.println(m1 % m2);//输出-2

自增自减不会改变数据类型。

byte b2 = 127;
b2++;
System.out.println(b2);//结果为10000000(-128的补码),输出-128

赋值运算符

= 、+=、-+、*=、/=、%=

当”=“两侧数据类型不一致时,可以使用自动类型转换或强制类型转换进行处理,支持连续赋值。

”+=、-+、*=、/=、%=“不会改变变量本身的数据类型。

short s2 = 10;
//s2 = s2 + 5; //编译失败
s2 += 5;

比较运算符

==、!=、>=、<=、>、>、instanceof


逻辑运算符

&(逻辑与)、&&(短路与)、|、||、!、^(异或)

操作的数据类型都是布尔类型

逻辑与&和短路与&&的异同(|与||类似):

相同点:1.运算结果相同;2.符号左边是true时,都会执行右边的语句。

不同点:1.符号左边为false时,&仍执行右边语句,但&&不执行右边语句。


位运算符

<<、>>、>>>、&、|、^、~

注意:

  1. 位运算符<<:空位补0,被移除的高位丢弃。
  2. 位运算符>>:最高位为0,则补0;最高位为1,则补1。
  3. 位运算符>>>:无论最高位是0或1,都补0。
  4. ^异或、~逐位取反。
  5. 2*8 等价于 2<<3,后者运算效率更高。
  6. 无<<<;数据类型为布尔类型时,&和|为逻辑运算符,数字类型时为位运算符。

骚操作:

交换两个变量的值,例如交换m和n:

m = m ^ n;
n = n ^ m;
m = m ^ n;

三元运算符

(条件表达式)?A:B; 其中A、B需为相同数据类型。

凡是用三元运算符的地方,都可以改写为if-else,反之不成立,三元运算符的执行效率高于if-else。


字符串转字符数组:
char[] str = s.toCharArray();
字符数组转字符串:
String.valueOf(str)

集合初始化:

HashSet<Character> vowels = new HashSet<>(Arrays.asList('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'));
List<Character> vowels = Arrays.asList('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U');
注意:这种方式添加的是不可变的 
List<Character> vowels = new ArrayList<>(Arrays.asList('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'));
上述方式的基础上使用 ArrayList 再包装一下,即转变为可变集合。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值