第2章 变量和运算符(6课时)

目标

1、基本数据类型(四类八种)

2、掌握数值型(byte short int long)数值范围

3、变量如何定义

4、运算符使用

快捷键:

ctrl+shift+o 可以用来引包也可以用来去除无用的包

ctrl+c copy

ctrl+v paste

ctrl+z 撤销

ctrl+x 剪切

ctrl+a 全选

ctrl+s 保存

alt+/   帮助

ctrl+/ 注释一行

ctrl+shift+/ 注释多行

ctrl+shift+f   格式化代码段

关键字(了解)

public static private class  void

跟数据类型相关的

class void  interface 

byte short int long  (整数)

float  double (小数)

char(单个字)

boolean(布尔型 只有true/false两个值)

用于给变量赋值的。

true false null

用于定义流程的

if else for while case switch  do break continue default return (跟第3章流程控制相关的)

保留字(了解)

goto备用

标识符

Java中的包、类、方法、参数和变量的名称总称为标识符

**标识符的命名规则

必须以字母、下划线(_)或美元符号($)开头;

余下的字符可以是下划线、美元符号或任何的字母或数字,长度不限;

标识符中不能有空格;

不能使用Java中的关键字或者保留字做为标识符;

总结一下:(a-zA-Z_$)(a-zA-Z_$0-9) 

0WER

#AAA

W2ER

$2ER

_2ER

大驼峰(所有单词首字母全大写)

小驼峰(首个单词首字母小写,以后每个)

一般命名规则:

工程(建议):全小写

包(package):全小写

类(class):大驼峰

方法名:小驼峰‘

常量名:全大写(暂时了解)

常量指程序里持续不变的值,在整个程序运行过程中它是不可改变的

练习下面哪些是合法的标识符:

identifier  、userName  、class(关键字) 、98.3(数字开头)  、Data#(#号)

user_name  、_sys_var1 、$change  、blue bird(空格)

常量变量和数据类型

常量指程序里持续不变的值,在整个程序运行过程中它是不可改变的

pi=3.14

常量:

整型 

浮点型(有小数的) 

布尔型(true/false 开关和标识) 

字符型:一个字符  用单引号括起来

字符串:超过一个字符的,叫字符串  用双引号 

特殊的引用型常量:null

变量

是会变量的量。

变量的声明:

定义时不赋值:变量类型  变量名;   

        int i;

         i=0;

定义时赋初值:变量类型  变量名=变量值; 

       int i=0;

练习:

                         int   x  =  3  ;

                         double  b = 0.123;

                         char   ch;

                         ch  = ‘a’;

数据类型

基本数据类型

    数值型 (整数:byte short int long  浮点数:float double)

     字符型(char)

     布尔型(boolean)

引用类型(类 接口 数组)

拓展:

堆栈(sgt)(了解)

基本数据类型(简单类型):都存在栈内存里

引用类型(把地址存在栈里,把实际值存在堆里)

范围

byte(8) short(16) int(32) long(64)

无符号的情况下:

byte 最大值: 2的8次方

short最大值: 2的16次方

int 最大值: 2的32次方

long最大值: 2的64次方

有符号:

8,16,32,64是按二进制位数 (01)

有符号的情况 8位二进制    11111111   ---左边第一位表示正负 0 表示正数 1-表示负数

https://blog.csdn.net/u013140345/article/details/79748888

0111 1111     +127

1111  1111    -127

1000   0000  -128

如果是无符号数:

 byte --0~255     

short 0-65535 

如果是有符号:

byte        1字节       -128-127 

short       2字节     -215~215-1

int          4字节     -231~231-1

long      8字节     -263~263-1

数字的进制

二进制 0B 0b开头

 十进制123   

  八进制 0开头  0123

 十六进制 0x开头

Java中不同进制整型的表示形式

十进制整数:0~ 9

–注:第一位不能是0

十六进制数:0~ 9  A ~ F

–注:必须以0x或0X开头

–例如: 0X8A   0x12

八进制整数:0

~ 7

–注:必须以0开头

–例如: 0123     012

二进制整数:0

1

–JDK7以前版本,没有二进制的整型常量写法,一般用十六进制代替

–注:JDK7以后版本,必须以0b或0B开头

–例如:

»0b01010000101        0B01010000101

»由于JDK7以后版本数值常量增加对下划线支持,也可以写成:0B0101_0000_1010_0010_1101_0000_1010_0010;

进制转换

其他进制转十进制

0X00     6      1      转换方式 从低位开始算也就是从右往左算 

0-9   10-15用abcdef

1---1*16的0次方---1

6----6*16的1次方-----96

两者相加1+96=97

0141--八进制 1*1+4*8+1*64=1+32+64=33+64=97

十进制转其他进制

十进制转16进制

257 /16=16...1    最低位为1

16/16=1...0          倒数第二位为0

     1<16                不用继续除了,第三位为1   

十进制257转16进制101

十进制转8进制

257/8=32......1     最低位为1

32/8=4......0         倒数第二位为0 

4/4=0......4 

                             4<8 不用除,直接得出第三位为4      

十进制257=8进制401

浮点数float和double

类型 比特数 有效数字 数值范围 

float 32 6-7 -3.4*10(-38)~3.4*10(38) 

double 64 15-16 -1.7*10(-308)~1.7*10(308) 

注意:给float类型变量赋值时,值后面加fF

char 字符型:单字符,用单引号括起来。

‘a’   ‘中’

‘\u03A6’  代表一个字符

练习:哪些是合法的字符常量?

A.‘AB’      两个

B.‘b’    

C.“123”   字符串  

D.‘\u123f’    

转译字符

\后的字符原样输出

特殊的转译字符

\r   回车

\n   换行

\t   tab

\b  back space

\'  \" \\(目录)

boolean 布尔类型(true/false 用于做判断 或开关)

练习:打印出带引号的信息如输出:你好”中国”

拓展:

运算时

byte short char之间运算时转成int

错误写法:

byte b1=125;

byte b2=b1-1;

正确写法:

byte b1=125;

 int b2=b1-1;

运算符

算术运算符:

+、﹣、*、/、%(取余)++(+1)、-- (-1)

++i和i++

练习1:

public  class Demo {

 public static void main(String[]args) {

  int i=0;

   int a  = i++;

    System.out.println(a + ", " + i);  //a=0,i=1

   a = ++i;   

   System.out.println(a + ", " + i);   //a=2,i=2

    i=i++;

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

    }

   }

练习2:

class  Hello{   

public static void main( Stringargs[ ]) {

       //将常量1和2相加,将结果3赋值给变量a

       int a = 1+2;

       int b = a*4;

      System.out.println(b/2);   //6

     System.out.println(a%2);   //1

  }

}

练习3:

5%3     2

-5%3     -2

-5%-3     -2

 5%-3       2

 5/2         2 

   -5/2      -2

赋值运算符:

=、

+=、   i+=2  等价于i=i+2

﹣=、  i-=2    i=i-2;

*=、    i*=2    i=i*2;

/=、     i/=2   i=i/2

%=       i%=2   i=i%2 

比较运算符:

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

逻辑运算符

!(取反)、

&&(与 and 两个同时满足才返回真)、

||    (或 or 满足其中之一)

按位运算符

& 按位与(二进制运算)

    两个数位,指定位数都为1,返回结果为1

| 按拉或 只要一位为1,就为1

^ 异或  相同位置的数相同就为0,不同就为1

~ 取反 1-0   0-1

<<  左移n位  实际结果=原值*2的n次方

>>   右移n位  实际结果=原值/2的n次方

示例: 算2的4次方最快的方式是将2左移3位

练习4

@Test

public void test08() {

int a = 2;

int b = 2 << 3;

System.out.println(b);//16

}

y=++i    y=i+1  (这个数先加后运算 )   i=i+1  

y= i++     y=i    (先运算后加 )  i=i+1  

逻辑与或与按位与或区别

与--》and    逻辑与&&(shift+7两次)  按位与&(shift+7一次)

逻辑与用的多,用来判断2-n个条件同否同时满足

a&&b&&c....     true/false

a&b   用来做位操作,也可以用来做逻辑判断

where     a>b and b>c

示例:练习5

@Test

public void testAnd() {

int i = 2;

// 逻辑与第一个条件为true,第二个会被执行

// boolean flag = ((i == 2) && ((i++) == 3));// i=3

// 逻辑与第一个条件为false,第二个不会被执行

// boolean flag=((i!=2)&&((i++)==3));//i=2

// 按位与 第一个条件为true,第二个会被执行

// boolean flag=((i==2)&((i++)==3)); //i=3

// 按位与第一个条件为false,第二个条件也会被执行

boolean flag = ((i != 2) & ((i++) == 3)); // i=3

System.out.println("flag--->" + flag);

System.out.println("i--->" + i);

}

结论:

逻辑与或同按位与或是有一定区别的:

相同点是:都能参与逻辑运算,按位与或完全可以代替逻辑与或;

区别是:按位与或可以参与位运算,逻辑与或只能参与逻辑运算,逻辑与或可以“短路”,按位与或不能“短路”。

a&&b(有短路操作)

a=true b需要判断是true/false 然后才能返回

a=false b不用判断 肯定返回false

a&b

a=true b需要判断是true/false 然后才能返回

a=false b还会被执行

三元运算符/条件运算符

if(expr1,expr2,expr3) mysql里,如果expr1成立,返回值为expr2,如果不成立就返回expr3

java 里用三元运算符?  :

表达式1?表达式2:表达式3;

表示式1成立吗?成立返回表示式2:不成立返回表达式3

boolean b=(1>2)?true:false;     b=false

int i=(2>3)?1:0;       i=0;

练习6

int x = 1;

int y = 2;

int z;

z = x > y ? x : y;   

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

练习7

int x=5;

System.out.println((x%2==0?"偶数":"奇数"));  //奇数

Junit

引jar 包  右键工程-build path-config build path-libraires-add library-junit-junit4-finish

课堂练习引入junit4的包

类型转换

自动类型转换:

有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后进行计算

    1)boolean类型不可以转换为其他的数据类型

    2)整型、字符型、浮点型的数据在混合运算中相互转换,转换时遵守以下原则

    3)其中的byte、short、char之间不会相互转换,他们三者在计算时首先会转换为int类型

@Test

public void conver02(){

int a=1003043;

long b=29999999999l;

//int c=a+b;//编译不错

long c=a+b;//正确

}

@Test

public void convert(){

byte b1=1,b2=2,b3;

//b1和b2是byte类型,java中进行计算时候将他们提升为int类型,再进行计算,

//b1+b2计算后已经是int类型,赋值给b3,b3是byte类型,类型不匹配,编译不会通过,需要进行强制转换。

b3=(b1+b2);

System.out.println(b3);

}

//int转换成long,如果不超过int最大值,转换正确,超过时转换结果错误。

@Test

public void conver03(){

System.out.println(Integer.MAX_VALUE);

long i=(long)(2147483641+1);  //转换正确,没有超过int最大值

System.out.println(i);

}

@Test

public void conver03(){

System.out.println(Integer.MAX_VALUE);

long i=(long)(2147483647+100); //结果错误 相加的结果超过了最大值

System.out.println(i);

}

以后会学正确的,用包装类来转换

@Test

public void conver03(){

Integer  a=Integer.MAX_VALUE;

Long i=a.longValue()+1;

System.out.println(i);

}

作业:

课后练习答案:

@Test

    public void test1(){

    int i=2;

    int j=3;

    System.out.println("i="+i+"j="+j);

    int temp;

    temp=i;

    i=j;

    j=temp;

    System.out.println("i="+i+"j="+j);

    }

@Test

    public void test2(){

System.out.println("请输入一个整数:");

Scanner sc=new Scanner(System.in);

int i=sc.nextInt();

System.out.println("您输入的是:"+i);

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

System.out.println(i/100%10);

//345/10=34  34%10=4

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

System.out.println(i/10%10);

//345%10=5

System.out.println(i%10);

    }

@Test

    public void test3(){

             float c = 45.0f;

             float f = 113.0f;

             float cTof = (f-32) * 5/9;

             float fToc = c*9/5+32;

             System.out.println("摄氏转华氏= "+cTof );

             System.out.println("华氏转摄氏  = "+fToc );

}

@Test

    public void test4(){

             char c = 'A';

           //加32即小写对应字母

           System.out.println((char) (c + 32) );

}

## 判断一个数是几位数 ##

@Test

public void test03(){

System.out.println("请输入一个整数");

Scanner sc=new Scanner(System.in);

int i=sc.nextInt();

    int count=0;

    while(i!=0){

    count++;

    i=i/10;

    }

    System.out.println(count);

}

转至:↓↓↓

链接:https://www.jianshu.com/p/7f21a74a3ec6

来源:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的:(第2章 变量和运算符(6课时))