第二章笔记整理

基本数据类型变量:

整数型:byte、short、int(默认)、long  

浮点型:float、double(默认)

布尔型:boolean

字符型:char

引用数据类型变量:String、class、interface、数组、标识、枚举

自动类型转换:容量小的数据类型自动转换成容量大的数据类型。

强制类型转换:容量大的数据类型转换成容量小的数据类型时,要加上强制转换符(有可能造成精度降低或数据溢出)。

(面试)

单个字节表示的整数范围(一个byte字节由8个位组成)

byte的取值范围是:-128~127

非负数表示的整数范围:0000 0000~0111 1111 = 0 ~ 127

负数表示的整数范围:1000 0000~1111 1111 = -128 ~ -1

(面试)

byte类型的两个变量进行加法运算时,会自动提升为int类型

byte b1=10;  byte b2=20;

b1=b1+b2;(×)    b1+=b2;(√)    b1=(byte)(b1+b2);(√)

(面试)

float类型和double类型的计算会存在误差(可用BigDecimal类型)。

两个整数相除,结果保留整数,且分母不能为0。

双引号引起来的是String类型的字符串,单引号引起来的是char类型的字符。

StringBuffer与String的区别在于拼接字符串,是一个可变长的字符串。

若加号的两边任意一边为字符串,则加号用于拼接。

ASCII表:换行-10、空格-32、‘0’-48、‘A’-65、‘a’-97

二进制:逢二进一,即只有0和1两个值。

二进制补码数值的最高位(即最左边)是符号位(0为非负数/1为负数)。

八进制:java中八进制要以0开头。

十进制转换成二进制

整数部分:"除2取余,逆序排列"

小数部分:"乘2取整,顺序排列"

负十进制转换成二进制

先将十进制的绝对值转换为二进制,然后进行按位取反再加1。

(负二转十,先减1,再取反)

~按位取反

byte b1=3; ~b1 原码:0000 0011

                            反码:1111 1100

                            补码:1000 0011  符号位不变,其他位取反

                     补码修复:1000 0100  最高位是0/1,补码-1/+1修复,即~b1=-4

十六进制:以0x或0X开头,逢十六进一,0-9以上的值用ABCDEF..表示。

(面试)短路特性

对于&&( || )来说,第一个判断语句为false(true),会自动跳过第二个判断语句。

int ia = 3;  int ib = 5;

boolean b3 = (ia++ == 4) && (++ib == 5)

System.out.println(ia,ib,b3);

                              4     5    false   

局部变量:方法或语句块的内部定义的变量

成员变量:方法外部、类的内部定义的变量

方法主要由权限修饰符、返回值、方法名和参数列表四个部分组成。

访问修饰符

同一个类

同包

不同包,子类

不同包,非子类

private

default(默认)

protected

public

^异或:两边相同为0,不同为1,true^true=false 自反性:a=a^b^b

<<左移/右移>>相当于乘(除)以2的移位数   >>>右移且左边的最高位始终补0

三目运算符:

结果表达式?表达式1(结果为true输出):表达式2(结果为false输出);

(面试)

java对包、类、方法、参数和变量等要素命名时使用的字符序列称为标识符。

1、由字母、数字、下划线和美元符号$组成

2、不能以数字开头

3、区分大小写

4、长度无限制

5、不能是java中的保留关键字

命名规范:  

类名:首字母大写,后面每个单词的首字母大写(大驼峰式)。

方法:首字母小写,后面每个单词的首字母大写(小驼峰式)。

变量:全部是小写。

转义字符:

\n 将当前位置移到下行的开头

\r 将当前位置移到本行的开头

\t 水平制表符,列对齐

\\ 代表一个反斜线字符

\’ 代表一个单引号字符 

\” 代表一个双引号字符

三种基本结构:顺序结构、分支结构(if、switch)和循环结构(for、while、do~while)。

if可进行区间判断   switch可进行等值判断   for适合在循环次数固定的情况下使用   

while先判断,后执行   do~while先执行,后判断

break语句用于执行完一个case分支后使程序跳出switch语句块;如果case后面没有写break,则直接往下执行。case后面的执行体可写{ }也可以不写{ }。

continue语句用于终止本轮本次循环,即本次循环中continue后面的代码不执行,进行下一次循环的入口判断。

(面试)

多重循环:for(){ //外层循环控制行数

                         for(){ //内层循环控制列数 }  }

标签名:循环体{ break 标签名; } 可退出指定层的循环

扫描器:Scanner input = new Scanner(System.in);

获取一个字符串:input.next();

获取一行(空格后可继续输入):input.nextLine();

判断输入类型:if(input.hasNext___()) { }

数组是相同数据类型的多个数据的容器。

格式1. 数据类型[ ] 数组名称 = new 数据类型[数组长度];

格式2. 数据类型[ ] 数组名称 = {数组内容 1,数组内容 2,数组内容 3...数组内容 n};

格式3. 数据类型[ ] 数组名; 格式3属于只创建了数组引用名,并未在内存创建数组空间。

格式4. 数据类型[ ] 数组名称 = new 数据类型[]{内容 1,内容 2,内容 3...内容 n};

使用new关键字来创建该类的对象,这个过程叫做类的实例化。

下标可以理解为数组中内容的数字序号,从0开始,对于长度为n的数组,下标的范围是0~n-1。

数组长度获取:数组名称.length

(面试)

一维数组的优缺点:

1、可以直接通过下标的方式访问指定位置的元素,速度很快

2、数组要求所有元素的类型相同

3、数组要求内存空间连续,并且长度一旦确定就不能修改

4、增加和删除元素时可能移动大量元素,效率低

foreach语句遍历数组

int[ ] str = {3,2,1,4,5};

for(int x:str){ System.out.println(x); }

Random random = new Random();

int num = random.nextInt(900)+100; //100~999的随机数生成

冒泡排序

升序排列的口诀:

N个数字来排队,两两相比小靠前,外层循环length-1,内层循环length-i-1

降序排序的口诀:

N个数字来排队,两两相比大靠前,外层循环length-1,内层循环length-i-1

(外层循环控制轮数i,内层循环控制每轮比较的次数)

二分查找(折半查找):

要求数组数据必须采用顺序存储结构有序排列(使用三个下标和while循环)。

当中间数据大于查找数据时,最大下标移动至中间数据减1的位置。

maxIndex = centerIndex-1;

当中间数据小于查找数据时,最小下标移动至中间数据加1的位置。

minIndex = centerIndex+1;

在线时间

SimpleDateFormat time = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);

System.err(报错、手动变红).println();

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值