java字符串循环移位函数_J2SE知识点归纳笔记(二)—Java基础知识 | 学步园

Java基础知识

前言

ps:排版的时候除了问题,所以导致目录结构有点移位

不知道是不是csdn的问题,给读者照成不便,请见谅!

在上一节中我们对Java的历史背景以及相关的运行原理进行了学习;

这一节中我们将对Java的基础知识进行学习;

而这些基础知识在C或者其他语言中都是有得,

学过的可以复习一下,没学过的可以学习下

好了,废话不多说

学习路线图:

603a5f85b8630749bacefb8f916431ac.png

学习路线解析:

这一节的知识点都很重要,都要熟练掌握,可以说是后面学习的根基

先掌握运算符以及基本的数据类型,特别要留意数据类型的转换,因为这个是面试的一个热点

运算符的优先级要记得;接着是字符串的相关操作,这个用的比较多;

三大控制结构要熟练,数组也是!

运算符:

算术运算符

十二个算术运算符

加法:+

减法:-

乘法: *

除法:/

求余:%

自增:++

自减:--

加法赋值:+=

减法赋值:-=

乘法赋值:*=

除法赋值:/=

求余赋值:%=

注意内容:

①如果除号的前后都是整型,那么结果也为整型       eg:5 / 2 = 2

②求余运算符通常用于整型,当然浮点型也可以,但结果是不准确的,但对精度要求较高时就不要了,可以使用BigDecimal类型

③自增和自减作为前缀还是后缀:

前缀:先自增,后参与运算后缀:先参与运算,后自增

eg:如图,大家来判断一下输出的结果:

1d2ddfd3436a628cc473ad9f14e5dce7.png

输出的结果是:

742be4e117425b897b749c7cb8cb2101.png

你算对了没?对付这种自增自减的问题,更重要的是细心,还有一点要注意的是:

自增自减运算符只能对单个变量起作用,表达式和常量是没用的

eg:(a + b)++  想让相加后的结果+1,但是确是错的,

91351e346a1e4afecb9c2afd337ecd35.png

同样,常量也是不行的,6++,这样也是错的!切记!

逻辑运算符

七个逻辑运算符

逻辑与: &

逻辑或: |

逻辑非: !

短路与 : &&

短路或 : ||

等于: ==

不等于: !=

"短路现象"

这里要注意的是短路与与短路或

短路与:只要前面的判断条件为假,那么后面的就不用判断了,结果一定为假

短路或:只要前面的判断条件为真,那么后面的就不用判断了,结果一定为真

注意与逻辑与和逻辑或区分哦!

三元运算符

使用格式:

a ? b : c;

如果a成立的话,执行b,否则执行c,精简版的if-else

使用例子:

max =  a > b ? a : b;

如果a > b,那么max = a;否则 max = b;

位运算符

七个位运算符

:

按位取反:~

按位与:&

按位或:|

按位异或:^

向右移位:>>

向左移位:<<

无符号右移:>>>

用法解析:

Java中可通过Integer类的toBinaryString(int i )方法将十进制数转换为二进制的字符串

①按位取反:    ~a = - a -1

②位逻辑运算符:

&操作数都为1结果为1,否则结果为0                       |操作数都为0,结果才为0,否则为1

^操作数相同为0,不同结果为1

③位移运算

左移1位等于乘以2;右移一位等于除以2;再取整,移位溢出的丢弃

无符号右移:和前面两个不同,最高位不是用原来的最高位填充,而是直接用0来填充最高位

运算符优先级

在所有的运算符中,圆括号的优先级最高!

优先级表:

3dee16562e56d29d914e0dd46f893a39.png

基本数据类型:

数据类型:

整型:int,short,long,byte;都是有符号的

浮点型:float,double

字符型:char

布尔值:boolean

注意事项:

①Java中,如果是想表示float类型的必须在后面加上后缀F,如果没有后缀的话会被默认为double类型

②在Java中char占用两个字节哦!因为Java使用Unicode 16位的编码方式,可以表示所有的字符

③布尔值boolean只有两个值:要么是true,要么是false,不能用1,0来表示真假哦!

数据类型的转换:

自动转换(隐式):

如果满足以下两个条件就会进行自动转换:

①转换后的类型比原来的类型大    ②转换前后类型相互兼容

123b340dc0f74aceec7c7581ea7072ad.png

eg:如果两个byte变量相加后,结果是int类型哦,这个是面试的一个考点来的!

强制转换(显式)

就是在前面加个(数据类型)

eg:a= (float) b

这里要注意精度损失的问题

常量与变量:

Java命名规则:

由数字,下划线,$,英文字母构成,且不能以数字开头

常量:

不能变的量就是常量

声明格式:  final  int PRICE = 3;

定义以后就不能改变PRICE的值了,不然会报错,这里要注意的是常量通常都是大写的

变量:

就是可以改变的量,变量的命名通常是,首字母小写,第二个单词起大写

eg:priceOfApple

赋值与初始化

赋值:

太简单了,不讲

初始化:

注意:对于局部变量,当我们想要使用一个变量的时候,要先对他进行初始化,不然编译器会报错的!!!

而例外的情况:实例变量与累变量,编译器会自动地对他们进行初始化

默认:boolean变量 为false,char默认为'\000'

字符串:

Java中用String类来存储,处理字符串

字符串定义:

System.out.println("Hello");     ""括着的是字符串常量

String str = "Hello" ;            定义一个字符串变量

字符串相关操作:

①字符串的连接:用"+"加号可以连接成字符串,比如: 123 + "" = "123"

②求字符串的长度:str.length()

③求子串:str.subString(开始下标,"结束下标")//注意是从0开始算的

④判断是否相等:这里要注意==这个比较的是字符串是否存储在同一位置!如果是比较内容我们要用equals("");

⑤返回给定下表处的字符:str.charAt(int index);//从0开始算的

⑥将指定字符串连接到字符串的尾部:str.concat("HeHe");

⑦检索某字符在字符串中第一次出现的下标:str.indexOf("a");

⑧检索某字符在字符串中最后一次出现的下标:str.lastIndexOf("a");

⑨去掉头尾的空白:str.trim(),这个在数据库操作中比较常用

⑩替换字符串中的某段:str.replace("想替换的字符串","替换后的字符串");

11.比较两个字符串的大小,无视大小写:str.equalsIgnoreCase(stg);

12.全部字符转化为小写:str.toLowerCase()

13.全部字符转化为大写:str.toUpperCase();

一个疑问?

String str = "abc"   str = "cba"

那么string对象是否会发生改变呢?

答案肯定是不会,str只是作为一个引用指向一个字符串存储的内存空间;

就是str存储的是只是一个地址!

当我们定义字符串变量时,系统会先对String常量池中的字符串进行匹配

有的话直接使用已经存在的字符串常量,否则在池中再生成一个!

程序控制语句

选择结构:

if语句:

在进行if语句的嵌套时要牢记一点:

else语句总是和其最近if语句相互搭配,当然前提是他们在同一块中

switch语句:

这里要注意的就是记得给每个case写个break,不然.....你试试就知道了

循环结构:

while语句和do-while()

后者与前者的区别就是无论条件是否成立,后者至少执行一次

for语句

由三部分组成,初始化,条件判断,迭代

比较常用,这里就不说了,循环嵌套的时候小心点,注意一定要有条件跳出循环,不然死循环,呵呵

控制语句:

break语句:可以直接终止循环,多层嵌套时,跳出一层循环

continue语句:直接停止本次循环的剩余语句,直接进行下一次循环

return语句:只能用在方法(函数)中,结束当前的方法

数组:

数组的作用:

数的集合,将一坨相同数据类型的数据存放到一个集合中

而这个集合名叫数组,我们可以通过数组名+下标来访问数组中的每一个元素

这里要区分:

数组名变量存在栈中,而指向内存堆中连续的内存空间,这个连续的内存空间是存储数组元素的

数组的使用:

数组的创建:

int[] array = new int[3];            //定义一个容量为3的整型数组

数组的初始化:

可在定义的时候初始化,或者利用for循环进行赋初值

数组的使用:

①获取数组的长度:array.length;

②数组复制:两个长度,类型相同的数组,可以直接用数组名赋值   eg: array1 = array2

③可以把main()的参数拿来用,args[];在命令行下可以在java ... 后添加参数

多维数组:

和其他语言不同,Java的多数组的列数可以是数目不同的!

使用代码如下:

public class arrayTest {

public static void main(String[] args) {

//创建一个二维数组

//①直接一开始赋初值

int[][] array1 =

{

{1,2,3},

{4,5,6},

{7,8,9}

};

//②创建规则的二维数组 5*3的

int [][] array2 = new int[5][3];

//③创建不规则的二维数组:3行,列数依次为:3,2,1

int [][] array3 = new int[3][];

//指定每一行的列数

array3[0]= new int[3];

array3[1]= new int[2];

array3[2]= new int[1];

//都是一样的,只需要把array3换一下即可

//对二维数组进行初始化,只需要通过两个for循环即可

for(int i = 0;i < array3.length;i++)

{

for(int j = 0;j < array3[i].length;j++)

{

//赋值

}

}

}

}

至于数组的排序,会在后续的博文中总结一篇,因为排序算是比较重要的

总结:

呼呼,这一章的内容比较多,笔者也总结了一天;

要掌握以下内容吧:

运算符:

就不用说了吧,位运算符的话用的比较少,但是左移运算符为*2,这个比直接*2高效哦!

短路与或要小心,优先级有个大体印象就行,如果不确定地话可以用()包住,保证优先运算

基本数据类型:

注意类型转换的问题,有个比较坑的面试题:两个byte变量想加后,结果为int哦!

还要注意,声明的变量一定要初始化,这是一个很好的编程习惯,要养成

字符串:

了解字符串的相关操作即可,记住几个比较常用的方法

控制语句:

这个不会就说不过去了

数组:

熟练掌握数组的创建,初始化,以及不规则多维数组的创建(Java特有的)

好吧,总结就到这里,内容比较多,都是知识点,记得不代表会

大家可以看下书,写下代码加深巩固,或者对有疑问的自己进行测试

如果文中有什么纰漏,错误,或者好的建议,望读者支出;

不甚感激!(*^__^*) 嘻嘻……

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值