javaSE部分(02)

javaSE

Day02

本来觉得se比较简单,如果忘记看一下笔记也可以捡起来,但是时间长了,奈何记性太差,学习之后老是忘记自己曾经都学会过什么,所以即便是基础也决定要虚心对待,记录如果出现错误,随时修改。

在csdn记录一下自己学习的过程。

1.变量

概述:在程序运行的过程中,值能发生改变的数据

作用:可以临时保存一个数据

定义格式

数据类型 变量名 = 值;

数据类型 变量名;

变量名 = 值;

数据类型 变量名 = 值,变量名 = 值,变量名 = 值 ...;(三/n个变量数据类型相同)

= 为赋值符号(如果有=出现,一定是先看等号右边的)

数据类型 变量名 = 值;

意思就是将等号右边的值赋给等号左边的变量

数据类型分类(面试可能会问,基础)

基本数据类型:4类8种

整型:byte short int long

浮点型:float double

字符型:char

布尔型:boolean

引用数据类型:

类 数组 接口 枚举 注解

数据类型        关键字        内存占用        取值范围(面试可能会问,基础)

字节型            byte           1个字节          -128~127 (算上0一共为256)

短整型           short           2个字节         -32768~32767

整形               int               4个字节         -2^31~2^31-1(正负21亿)

长整型            long            8个字节         -2^63~2^63-1(19位)

单精度浮点数 float            4个字节         1.4013E-45至3.4018E+38

双精度浮点数 double        8个字节         4.9E-324至1.7977E+308

字符型            char            2个字节         0至2^16-1

布尔类型        boolean       1个字节         true,false

也体现了java属于强类型语言。

整数默认类型为int(定义long型的时候一般给后面的数据加L)

小数默认类型为double(定义float的时候一般给后面的数据加f)

按照取值范围从小到大排序

Byte short char -> int ->long -> float -> double

变量和变量之间做运算

加 减 乘 除

变量和常量之间做运算

加 减 乘 除

\  在java中代表转义字符

\n 在java中代表换行符

\t 在java中代表制表符

\n \t 都代表一个字符,可以直接使用char

用char类型表示一个’

char num = ‘\’’;

System.out.print(num);

变量使用的注意事项

  1. 变量不初始化,不能直接使用
  2. 在同一个作用域中,不能定义多个相同名字的变量
  3. 不同的作用域之间不要相互访问

   如果作用域有嵌套:大作用域不能直接使用小作用域中的变量

   小作用域可以使用大作用域中之前定义好的变量

2.标识符

概述:给方法,类,变量取的名字

硬性规定(必须遵守)

  - 标识符可以包含`英文字母26个`、`0-9数字` 、`$(美元符号)`和`_(下划线)`。

  - 标识符不能以数字开头。

  - 标识符不能是关键字。

软性建议(建议遵守)

  给类取名:每一个单词首字母都大写(大驼峰式)

  给方法取名字:  从第二个单词开始往后(包括第二个单词)首字母大写(小驼峰式)  

  给变量取名字:  从第二个单词开始往后(包括第二个单词)首字母大写(小驼峰式)

取名字的时候最好要:见名知意

3.数据类型转换

什么时候会发生数据类型转换?

  等号左右两边的类型不一致时

分类:

  自动类型转换

  强制类型转换

按照取值范围从小到大排列

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

自动类型转换

表现形式

  取值范围大的类型 变量名 = 取值范围小的类型

怎么转?

  小类型自动向大类型转换

强制类型转换

表现形式

  取值范围小的类型 变量名 = 取值范围大的类型  -> 报错

如何强转

  取值范围小的类型 变量名 =(取值范围小的类型)取值范围大的类型

强转的注意事项

开发时不要故意写成强转的形式(除非没有办法),因为会出现精度损失和数据溢出

(精度损失一般是是强转之后数据舍弃后面不在取值范围的部分

数据溢出一般是是强转之后数据舍弃前面不在取值范围的部分)

byte short 如果等号右边是常量,且没有超出byte和short的范围,不用手动强转(jvm自动给强转了),但是等号右边一旦有变量参与,就要先提升为int型,需要手动强转

char类型如果等号右边有变量参与,也会自动提升为int,需要手动强转

char类型一旦提升为int,字符会去一个码表中查询此字符对应的int值->ASCII码表

如果ascii码表中查不到会自动去unicode码表中查询char对应的int值->万国码

(A - > 65 a- > 97)

4.运算符

算数运算符

+

-

*

/ 除(取整)

% 除(取余)

以上和数学中学过的用法一致

这其中+,如果是数值相加,就是加法,如果是字符串之间用+,就是拼接

并且任意类型的全部变成字符串

自增自减运算符

++

--

自增自减运算符是算数运算符的一种,只能和变量一起使用,且只变化1

注意事项

单独使用:符号在前后无所谓,都是先运算,然后使用运算后的值

混合使用:和其他语句一起使用了,比如赋值语句,打印语句,此时,

  符号在前,先运算,再使用运算后的值

  符号在后,先使用原来的值,使用完毕之后,自身++或--

public class Demo{

public static void main(String[] args){

int i = 1;

int result = i++;

System.out.println(result);//1

System.out.println(i);//2

int c = 100;

c = c++;

System.out.println(c);//100

c = c++;

System.out.println(c);//100

result = c;

System.out.println(result);//100

int a = 10;

int b = 20;

int result01 = a++ - --b + ++a;

System.out.println(result01);//3

}

}

赋值运算符

= :基本赋值符号,先看等号右边的

+=

-=

*=

/= :整数相除,取整数部分(商)

%= :取余数部分

注意:复合赋值运算符中,byte short char做运算时,即使有变量参与,也不用我们手动强转(jvm自动转的)

 int i = 10 i+=2-->  i = i+2

关系运算符

关系运算符专门用于判断,结果为 boolean型

==:判断符号前后是否相等,如果相等,结果为true,否则为false

>:判断符号前的数据是否大于后面的数据,如果大于,为true;否则为false

<:判断符号前的数据是否小于后面的数据,如果小于,为true;否则为false

>=:判断符号前的数据是否大于或者等于后面的数据,如果大于或者等于为true;否则false

<=:判断符号前的数据是否小于或者等于后面的数据,如果小于或者等于为true;否则false

!=:判断符号前后是否不相等,如果不相等,结果为true,否则为false

逻辑运算符

作用:主要是连接关系运算符的  逻辑运算符前后都是boolean型的数据

结果:boolean型

逻辑运算符

&&(与,并且):有假则假

||(或):有真则真  

^(异或):符号前后结果一样为false   符号前后结果不一样为true

!(非,取反)  非true为false    非false为true

& | 和 && || 有什么区别:

&:如果符号前后是boolean表达式,称之为逻辑运算符;如果&前后是数值,为位运算符

如果是逻辑运算符:有假则假

如果符号前面为false,jvm照样会执判断符号后面的

|:如果符号前后是boolean表达式,称之为逻辑运算符;如果|前后是数值,为位运算符

如果是逻辑运算符:有真则真

如果符号前面为true,jvm照样会执判断符号后面的

&&(短路效果):有假则假,符号前如果是false,jvm后面不会执判断

||(短路效果):有真则真,符号前如果是true,jvm后面不会执判断

^:如果符号前后是boolean表达式,称之为逻辑运算符;如果^前后是数值,为位运算符

三元运算符

格式:

boolean表达式?表达式1:表达式2

执行流程

先走boolean表达式,如果是true,返回?后面的表达式1;否则就返回:后面的表达式2

面试练习:

class Exam{

public static void main(String[] args){

int i = 1;

int j = 2;

i += j++;

/*

i += j++;等价于  i = i + j++;

(1)j++,先取j的值2,然后j自增为3

(2) 1 + 2 = 3

(3)把3赋值给i

*/

j = i++ / 2 + ++i * j--;

/*

(1)i++,先取i的值3,然后i自增为4

(2)i++ / 2,3/2结果是1

(3)++i,i先自增为5,然后取i的值5

(4)j--,先取j的值3,然后j自减为2

(5)++i * j--,用取出来的5*3=15

(6)求+加法,  结果是1 + 结果15 = 16

(7)把16赋值给j

*/

System.out.println("i = " + i);//5

System.out.println("j = " + j);//16

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值