javaday02

目录

Day02---数据类型. 2

1       数据类型. 2

1.1        前言. 2

1.1.1      标识符. 2

1.1.2      关键字. 2

1.1.3      注释. 3

1.1.4      变量. 3

1.1.5      常量. 3

1.2      基本类型(八种)4

1.2.1     介绍. 4

1.2.2     练习1:测试最大值最小值. 4

1.2.3     练习2:圆形面积. 4

1.2.4     练习3:变量交换. 4

1.3      引用类型. 5

2       基本类型的字面值(5条). 5

2.1      整数字面值是int类型. 5

2.2      byte,short,char三种比int小的整数可以用范围内的值直接赋值. 5

2.3      浮点数的字面值是double类型. 5

2.4      字面值后缀LFD5

2.5      进制前缀. 5

3       基本类型的类型转换. 6

3.1      小到大. 6

3.2      大到小. 6

3.3      浮点数转成整数,小数直接舍弃. 6

4       运算规则(5条). 6

4.1      计算结果的数据类型,与最大类型一致. 6

4.2      byte,short,char三种比int小的整数,运算时会先自动转换成int6

4.3      整数运算溢出. 7

4.4      浮点数运算不精确. 7

4.5      浮点数的特殊值. 7

5       运算符. 7

5.1      概述. 7

5.2      练习1:平年闰年. 8

5.3      练习2:自增自减. 8

5.4      练习3:三个数的最大值. 8

Day02--数据类型

1   数据类型

1.1     前言

1.1.1        标识符

可以简单的理解为一个名字。

在Java中,我们需要标识代码的很多元素,包括类名、方法、字段、变量、包名等。我们选择的名称就称为标识符,并且遵循以下规则:

  1. 标识符可以由字母、数字、下划线(_)、美元符($)组成,但不能包含 @、%、空格等其它特殊字符。
  2. 不能以数字开头。
  3. 标识符是严格区分大小写的。
  4. 标识符的命名最好能反映出其作用,做到见名知意。

1.1.2        关键字

在java语言中已经被赋予特定意义的一些单词。一共有53个关键字。

其中有两个保留字:const和goto。

关键字不能被用作标识符!!

 

1.1.3        注释

Java代码的解释说明。不影响程序的运行,用于辅助读程。

//单行注释

/*    多行注释   */

/**     文档注释     */

1.1.4        变量

在JAVA中,有的数据值是不固定的,总在变,我们还需要记录这些值,我们可以把这些值理解为变量。

我们通过三个元素来描述变量:变量类型,变量名以及变量值。

int age=18;   //声明int类型的变量并赋值

String tel;  //声明String类型的变量

注意:

1、 变量名必须是一个有效的标识符。

2、 变量名不可以使用java关键字

3、 变量名不能重复

1.1.5        常量

在程序运行过程中一致不会改变的量成为常量。

略。。。

1.2  基本类型(八种)

1.2.1    介绍

 

类型名称

字节空间

范围

整数型

byte

1

-27到27-1   或者   -128到127

short

2

-215到215-1

int

4

-231到231-1

long

8

-263到263-1

浮点型

float

4

单精度,对小数部分的精度要求不高

double

8

双精度,精确的小数部分并操作值很大时

字符

char

2

0到65535

布尔

boolean

1

真true  假false

1.2.2    练习1:测试最大值最小值

创建day02工程

创建cn.tedu.basic包

创建Test1_Scope.java

package cn.tedu.basic;

 

//这个类用来测试取值范围

public class Test1_Scope {

    public static void main(String[] args) {

       //测试整型数据范围 byte short int long

       //创建变量保存byte取值 -- 变量类型 变量名=变量值

       byte min = Byte.MIN_VALUE;

       byte max = Byte.MAX_VALUE;

       System.out.println(min);//-128,打印变量的值

       System.out.println(max);//127

      

       short smin = Short.MIN_VALUE;

       short smax = Short.MAX_VALUE;

       System.out.println(smin);//-32768

       System.out.println(smax);//32767

      

       //long -- Long

       long lmin = Long.MIN_VALUE;

       long lmax = Long.MAX_VALUE;

        System.out.println(lmin);//-9223372036854775808

       System.out.println(lmax);//9223372036854775807

      

       //TODO int -- Integer

       int imin = Integer.MIN_VALUE;

       int imax = Integer.MAX_VALUE;

       System.out.println(imin);//-2147483648

       System.out.println(imax);//2147483647

      

       //TODO  浮点型float--Float  double--Double

       float fmin = Float.MIN_VALUE;

       float fmax = Float.MAX_VALUE;

       System.out.println(fmin);//1.4E-45

       System.out.println(fmax);//3.4028235E38

      

       double dmin = Double.MIN_VALUE;

       double dmax = Double.MAX_VALUE;

       System.out.println(dmin);//4.9E-324

       System.out.println(dmax);//1.7976931348623157E308

      

       //布尔类型

       boolean b = true;//真,通常用1表示真

       boolean b2 = false;//假,通常用0表示假

      

       //字符类型

       char c = 'a';

       char c2 = '中';//char类型可以存储一个中文汉字

       char c3 = 97;

       System.out.println(c);

       System.out.println(c2);

      

    //char类型数据可以保存数字,但是在使用时,并不是使用数字本身,而是,

//拿着数字去查了ascii码表,把数字对应着的字符,拿出来使用

       System.out.println(c3);//a,就是因为ascii码表数字97对应着的是a字符

      

    }

   

}

1.2.3    练习2:圆形面积

圆的面积:π*r*r

圆的周长:2*π*r

package cn.tedu.basic;

 

import java.util.Scanner;//自动导包

 

//求圆面积

public class Test2_Area {

      

       public static void main(String[] args) {

              //1、定义变量记录半径

//           double r = 10.1;//写死了

             

              //动态接收键盘输入的值

              double r = new Scanner(System.in).nextDouble();

             

              //2、带入公式算结果

              double result = 3.14*r*r;

             

              //动态拼接字符串:+

              System.out.println("圆的面积是"+result);

             

       }

      

      

}

1.2.4    练习3:变量交换

接收用户输入的值a和b。

假设a=1,b=2将a和b的值做交换。

package cn.tedu.basic;

 

import java.util.Scanner;

 

//测试变量交换

public class Test3_Exchange {

      

       public static void main(String[] args) {

              //1、接收键盘输入的两个整数a和b

              int a = new Scanner(System.in).nextInt();

              int b = new Scanner(System.in).nextInt();

             

              //2、交换

              int c = a ;//定义c,记录a的值

              a = b ;//b的值给a

              b = c ;//把c的值给b

             

              //3、打印a和b的值

              System.out.println(a);

              System.out.println(b);

             

       }

      

}

1.3  引用类型

后面学习数组和OOP时才会用到的知识,暂时不讲。

2   基本类型的字面值(5条)

2.1  整数字面值是int类型

int a = 999999999999999; //超出了int的取值范围

2.2  byte,short,char三种比int小的整数可以用范围内的值直接赋值

byte b = 127;//可以的,因为127在byte的取值范围内

byte b2 = 128; //错误,因为128的字面值是int类型,是4字节,byte是1字节,放不开

2.3  浮点数的字面值是double类型

double b = 1.5;

 

2.4  字面值后缀LFD

long a = 999999999999L;// 999999999999字面值是int类型,但是超出int取值范围就报错了,只能扩大数据范围,加后缀L,从int转成long

float b = 3.0F;//3.0字面值是double类型,加后缀L,从double转成float

double d = 3D;//3字面值是int类型,加后缀D,从int转成double

2.5  进制前缀

0b    -2进制   如: 0b0010

0     -8进制   如:076

0x    -16进制  如: 0x0986

\u    -char类型,16进制  如: \u0000

3   基本类型的类型转换

3.1  小到大/隐式转换

3.2  大到小/显式转换

需要强制类型转换

package cn.tedu.basic;

 

public class Test {

 

       public static void main(String[] args) {

              //小转大--隐式转换

              short a = 10;

//小转大,右侧的a是小类型,左侧b是大类型,详单与拿着小类型给大类型,可以直接赋值

              long b = a;

             

              //大转小--显式转换--强制转换--(小类型)

              double m = 10.8;

       //右侧m是大类型,左侧n是小类型,拿着大类型直接给小类型赋值--不行

              int n = (int)m;

             

       }

 

}

3.3  浮点数转成整数,小数直接舍弃

不管0.1还是0.9全都舍弃。

4   运算规则(5条)

4.1  计算结果的数据类型,与最大类型一致

System.out.println(3/2);//1

4.2  byte,short,char三种比int小的整数,运算时会先自动转换成int

byte a = 1;

byte b = 2;

//byte c = a+b;

//错误,因为a+b运算时自动变成int类型,大类型,给小类型byte类型赋值,---不能直接赋值--强转

byte c = (byte)(a+b);

 

4.3  整数运算溢出

整数运算,类似于一个钟表,转到最大时,再转会回到最小。

计算:光速运行一年的长度是多少米。3亿m/s

System.out.println(300000000L*60*60*24*365);

//整数运算溢出解决方案:超出int范围的整数运算会溢出,可以扩大数据范围,加L,变成long类型

4.4  浮点数运算不精确

System.out.println(1-0.8);

//0.19999999999999996

4.5  浮点数的特殊值

Infinity 无穷大  3.14/0

NaN  not a number   0/0.0

5   运算符

5.1  概述

算术运算符

+ - * /

基本运算

%

模 / 取余数  10%3结果是1   5%2结果是1   n%2==0

++     --

自增    自减

比较运算符

结果是boolean类型

==

相等比较   1==1 结果是true

!=

不等比较   1!=1结果是false

逻辑运算符

结果是boolean类型

&&    &

逻辑与(短路与),两边同为真结果才为真

||       |

逻辑或(短路或),两边只要有一个真结果就是真

+

字符串连接

非,非真是假,非假是真

三元运算符

?  : 

三项运算

1  ?   2   :   3  

1是真取2,1是假取3

赋值运算符

=

赋值运算

+=    -= 

*=    /=

复合的赋值运算

a=a*21 ;   // a *= 21;

逻辑运算符:结果是boolean类型

 

&  -- 是并且的关系(单与)

    1 & 2 想要得到最终结果是true,对于1和2的要求是:必须都得是true

 

&& -- 是并且的关系(双与/短路与)

    1&& 2 ,高效,当1结果是false时,2会被短路

 

 

|  -- 是或者的关系

    1 | 2 想要得到最终结果是true,对于1和2的要求是:1或者2有一个是true就可以

 

 

|| -- 是或者的关系(双或/短路或)

    1 || 2 ,高效,当1的结果是true时,2会短路

5.2  练习1:平年闰年

输入年号,判断是否是闰年。

两个条件:

1、能被4整除,并且不能被100整除

2、能被400整除

package cn.tedu.basic;

 

import java.util.Scanner;

 

//测试平年闰年

public class Test6_RunNian {

   

    public static void main(String[] args) {

       //1、接收用户输入的年号

       int year = new Scanner(System.in).nextInt();

      

       //2、判断year是平年还是闰年

       String desc = "平年";//设置默认值就是平年

      

       //if(判断条件){ 满足条件的代码 }

//     1、能被4整除,并且不能被100整除

       if(year % 4  == 0){ //能被4整除

           if(year % 100 != 0){ //不能被100整除

              desc = "闰年"; //修改desc的值为闰年

           }

       }

      

//     2、能被400整除

       if(year%400 == 0){

           desc = "闰年"; //修改desc的值为闰年

       }

      

      

       //TODO 优化第17行到第27行的代码

       //if((小判断条件1  &&  小判断条件2)  ||    大判断条件2){ 修改desc的值为闰年 }

       if(( year%4==0  &&  year%100 != 0 )  ||  year%400 == 0  ){

           desc="闰年";

       }

      

      

//     System.out.println("2000年是闰年");

       //+拼接字符串

       System.out.println(year+"年是"+desc);

      

    }

   

   

}

 

 

5.3  练习2:自增自减

package cn.tedu.basic;

 

//测试自增++自减--

public class Test4_ZiZeng {

   

    public static void main(String[] args) {

       //符号在前,先变化后使用

       //符号在后,先使用再变化

       int a = 1;

       System.out.println(a++);//1

      

       int b = 1;

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

       System.out.println(++b+a+b++);//8,3+2+3

      

       //TODO 自减

       int m = 1;

       System.out.println(m--);//1

      

       int n = 1;

       System.out.println(--n);//0

      

       System.out.println(--m-n-m--);//0,-1-0-(-1)

      

    }

   

}

5.4  练习3:三个数的最大值

package cn.tedu.basic;

 

import java.util.Scanner;

 

//三元运算符

public class Test5_Max {

   

    public static void main(String[] args) {

       //两个数里的大值

       int a = 10;

       int b = 6;

      

       //三元   1  ?  2 :  3

       //最终得到的是2还是3,要看1的结果,如果1成立得到2的结果,如果1不成立,得到3

       int max = a> b ? a : b ;

       System.out.println(max);

      

      

       //接收键盘输入的,三个数,取出最大值

       int m = new Scanner(System.in).nextInt();

       int n = new Scanner(System.in).nextInt();

       int o = new Scanner(System.in).nextInt();

      

       //1、定义变量记录最大值,拿着m和n比,比出来的结果交给变量保存

       int result = m > n ? m : n;

      

       //2、拿着result和o比,得到的结果才是最大值交给maxValue保存

//     result = result > o ? result : o ;

 

       int maxValue = result > o ? result : o ;

       System.out.println(maxValue);

      

       //TODO 优化

       //拿着m和n比 ? m和o比 : n和o比

       int result2 = m > n ? (m > o ? m : o ) : (n > o ? n : o );

       System.out.println(result2);

    }

   

   

   

}

猜你喜欢

转载自www.cnblogs.com/ou-yang/p/12956904.html
今日推荐