第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=0....1           

十进制257转16进制101

十进制转8进制

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

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

4/4=0......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);

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容

  • 第四天 数组【悟空教程】 第04天 Java基础 第1章数组 1.1数组概念 软件的基本功能是处理数据,而在处理数...
    Java帮帮阅读 1,583评论 0 9
  • Day01 class 例子{ public static void main(String[] args){ ...
    周书达阅读 1,012评论 0 0
  • Java变量 1、java中的变量 1.变量先定义,后使用。 2.定义:①声明,②赋值 3.定义的三要素:数...
    小短腿要早睡啊阅读 303评论 0 0
  • 1 关键字 1.1 关键字的概述 Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或...
    哈哈哎呦喂阅读 645评论 0 0
  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom阅读 2,689评论 0 3