JavaSE学习(二):进制转换-数据类型转换-Java运算符

一、进制转换

1.1 其他进制转十进制(以十六进制为例):

  十六进制范围:0-9, A-F对应数字10-15 

  2A7E(16)  =  14*16(0) +7*16(1) + 10*16(2)  + 2*16(3) =  10878(10)

1.2 十进制转二进制:将十进制数除以2,取余数,将最后一位余数排在第一位,倒数第二位的数排在第二位,依次排列,构成的01数字串即为表示该十进制数的二进制数。

  总结:十进制%二进制 余数 0-1(Java中符号 “%”表示取余),逆序排列。

(图片引自百科)

1.3 十进制转八进制:十进制%八进制 余数 0-7,逆序排列。

  为了区分十进制在数前加0区分   202  ----0312

1.4 十进制转16进制:十进制%16进制 余数 0-9 A-F(),逆序排列。

为了区分十进制在数前加0x区分   1203 --- ox4B3

二、数据类型之间的转换

  两种方式:隐式转换和强制转换

2.1 隐式转换

存储范围从小到大自动实现隐式转换

byte b1 = 3;

byte b2 = b1 + 4;    //隐式转换

int i = b1; 隐式转换

例程:Demo1.java

 1 public class Demo1{
 2     //基本类型的隐式转换
 3     public static void main(String [] args) {
 4         //byte b = 128;
 5         byte b1 = 1;
 6         //byte b2 = b1 + 1;     //隐式转换,结果byte转为int,报错
 7         byte b3= 2+3;           // 没隐式转换,byte 不会报错
 8         int i=b1;                      //隐式转换
 9
10         short s = b1;
11         //short s1 = 1  +s;
12
13         char c = ‘1‘;
14         int i1 = c + 1;  //  50    隐式转换
15         System.out.println(i1);
16         System.out.println("b1的值为"+b1);
17         System.out.println(b3);
18         System.out.println(i);
19         System.out.println(s);
20     }
21
22 }

注:byte short与 char 之间没有隐式转换

2.2 强制转换:存储范围从大范围数据类型到小范围数据类型强制转换。

小范围数据类型  变量名 = (小范围数据类型)   数据

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

          -char

int i = 1;

byte b  = (byte) 1;

例程:Demo2.java

 1 public class Demo2 {
 2     public static void main(String[] args) {
 3         // 基本数据的强制转换
 4         int i = 4;
 5         byte b = (byte) i;
 6         System.out.println(b);
 7
 8         double d = 4.3536;
 9         float f = (float) d;
10         long l = (long)d ;//强转导致数据精度丢失
11         System.out.println(l);
12
13          int i2 = 128;
14          byte b2 = (byte) i2;    // -128   强制类型转换造成数据溢出 原码  反码 正数不变负数各位取反, 补码:正数不变负数反码+1;
15          System.out.println(b2);
16     }
17
18 }

注:强制转换可能造成数据的溢出或者精度的丢失。

三、引用数据类型

3.1 除了基本数据类型外,其他数据类型都是引用数据类型。

String   Arrays  Scanner

String :字符串。Java中用双眼号内,“内容”的数据称为字符串

eg: “1235”  “我按你你们慢慢”

3.2 思考:Java中char 类型数据能不能存储一个汉字?

答:能;

因为Java中编码格式采用Unicode编码,Unicode编码中一个英文或一个汉字各占两个字节,char类型能够储存两个字节的数据。所以可以。

例子Demo3.java

 1 public class Demo3 {
 2     public static void main (String [] args) {
 3
 4         //引用类型String的运用
 5         String  s1 = "I Love ";
 6         System.out.println(s1);
 7
 8         //    算术运算符+号的运用
 9         System.out.println(1 + 2 + 3 + 4);       // 10   加法运      运算没有优先级左到右依次执行
10         System.out.println(1 + 2 + "字符串");   // "3   字符串“    先加法运算,后字符串拼接
11         System.out.println(1 + 2 + 3 + "4");    // "64"
12         System.out.println(1 + 2 + "3" + 4);    // "334"
13         System.out.println(1 + "2" + 3 + 4);   // "1234"
14         System.out.println("1" + 2 + 3 + 4);   // "1234"
15     }
16
17 }

四、运算符

3.1分类:算术运算符、关系运算符、逻辑运算符、按位运算符、条件运算符

3.2算术运算符

  +  -  *  /  %  ++   --

1、+ :在Java中既可以做加法运算也可做拼接。

  当+ 号两边都是整型或浮点型时做加法运算,当至少一边是字符串类型时做拼接类型。

  注:当做拼接操作时隐式转换为字符串格式。

  例程:如上Demo3.java

2、/ :表示取整操作      5/2   运行结果为  2

% :取余操作         5%2 运行结果为: 1

   注:要想得到数学中的除法运算结果俩个数据至少有一个为浮点类型。

给定一个数99999秒,将其转为多少小时多少分中多少秒?

99999%

例子Demo4.java

 1 public class Demo4 {
 2     public static void main(String [] args) {
 3         //99999秒换算成几小时几分几秒
 4         int s = 99999;
 5         int h = s /3600;              //取整小时
 6         System.out.println(h);
 7         int s1 = s %3600;              //取余数剩下几秒
 8         int  m = s1 /60;                 //换算成分钟
 9         System.out.println(m);
10         int s2 = s1 %60;                //取余数剩下几秒
11         System.out.println(s2);
12
13         System.out.println("99999秒等价于"+h+"小时"+m+"分"+s2+"秒");
14     }
15
16 }

3、前++,后++,前--,后--

int i = 5; int j ;

前++: ++i  规则:先自身加1,再后运算。

j = ++i;  i = 6   j = 6;

后++: i++  规则:先运算,再自加1。

j = i++; i = 6,  j = 5;

int i = 5; int j ;

前--: j = --i;   i = 4;  j = 4;

后--: j = i--;   i = 4;  j = 5;

例程:Demo5.java

 1 public class Demo5{
 2     public static void main(String[] args) {
 3         int i = 6;
 4         int j = i++;                       //   i 7   j 6    每一步 i  j 的值都更新
 5         System.out.println(++i +j);              // 8 + 6   14
 6         System.out.println(++i + j++);        // 9 + 6   15        i 9     j7
 7         System.out.println(i + j--);              // 9 + 7    16        i9     j6
 8         System.out.println(i++ + ++j);       // 9 + 7    16        i10    j7
 9         System.out.println(++i + --j);         // 11 + 6   17        i11     j6
10     }
11
12 }

3.3 关系运算符

>   <  >=  <=  !=   ==

1.运算结果:布尔类型true 、false

2.  ==:当等号两边是数值时可以比较等号两边数值是否相等(也是比较地址值),如果是引用类型是比较地址值是否相等。

思考:为什么是数据类型可以比较数值是否相等?

因为数值类型数据再计算机中是共享的,如果声明了一个数值型变量,并初始化了一个数据X,计算机会开辟一个新的的内存空间存储X的值,当定义了另一个同种数据类型数据x,机器在已开辟的内存空间会查找是否有x,若和X表示的是同一个数值,再计算机中不会再另开辟空间为x数值储存而是将地址值指向X的地址值。

例子:Demo6.java

 1 public class Demo6{
 2     public static void main(String [] args) {
 3         //关系运算符 ==
 4         int a = 5;
 5         int b = 5;
 6         System.out.println(a==b);         //true
 7
 8         String s1 = new String("1");
 9         String s2 = new String("1");
10         System.out.println(s1==s2);              //new 开辟新的存储空间地址  false
11         System.out.println( s1.equals(s2) );    //用函数判断s1 s2在数值上是否相等 true
12
13         String s3 = "1";
14         String s4 = "1";
15         System.out.println(s3==s4);               //判断s1 s2在数值上是否相等  false
16
17         //扩展性的赋值运算   *= +=   /=
18         int i = 4;
19         int j = 20;
20         System.out.println(i *= 5);       //  20
21         System.out.println(i /= 5);       //4
22         System.out.println(j %= 3);      //2
23     }
24 }

3.4赋值运算

1、=:Java中单个等号表示将等号右边的数值赋给左边的变量。

2、扩展性的赋值运算符

+=   -=   *=  /=

+= :  i+=5   <===>  i = i + 5;

*=:  i*=5    <===>  i = i * 5;

例子:Demo6.java

3.5 条件运算符(三目运算符)

语法:布尔表达式 ? 值1:值2;

当布尔表达式结果为true时,运算结果为值1;

当结果为false时,运算结果为值2。

值1、值2可以为任意类型数据,且可以为相等的数据类型。

练习:求两个、三个数中的最大值,及判断数的奇偶。

例子:Demo7.java

 1 public class Demo7{
 2     public static void main(String [] args) {
 3         System.out.println(5>3 ?  "是":"否");
 4         System.out.println(3>4 ? 5:3.123);
 5         System.out.println(3>4 ? 5:‘2‘);
 6         getMax();
 7         checkOddEven();
 8
 9     }
10     // 比较三个数值的最大值
11     public static void getMax() {
12         int i = 5;
13         int j = 8;
14         int k = 6;
15         System.out.println("i和j最大的是:"+ (i>j ?  i:j ) );
16         System.out.println("i、j、k最大的是:"+( k>(i>j ?  i:j) ? k: (i>j ?  i:j) ) );
17     }
18
19     // 判断奇数偶数
20     public static void  checkOddEven () {
21         int i = 5;
22         System.out.println(i+"是:"+( i%2==0 ?  "偶数":"奇数"));
23     }
24
25 }

3.6 逻辑运算符:

逻辑与:&&

逻辑或:||

逻辑与和逻辑或的短路功能:逻辑与遇到false时,后面的表达式不再参与运算,结果为false;逻辑或遇到true时,后面的表达式不再参与运算结果为true。

例子: Demo8.java

 1 public class Demo8{
 2     public static void main(String [] args){
 3         //逻辑与逻辑或
 4         int i = 5;
 5         int j = 6;
 6
 7         System.out.println(i++ > j  && i++>j-- );
 8         System.out.println("i值:"+i + "j值:"+j);        //短路i6 j6
 9         System.out.println(++i > j  || i++>j-- );
10
11         System.out.println("i值:"+i + "j值:"+j);   //短路i7 j6
12          getRunNian();
13     }
14
15     public static void getRunNian() {
16         /**
17         *判断闰年条件:能够4整除,但是不能过被100整除或者能够被400整除的年份
18         */
19         int year = 2018;
20         System.out.println( (year%4==0&&year%100!=0||year%400==0) ? "闰年":"平年" );
21     }
22
23 }

原文地址:https://www.cnblogs.com/Kanekiyi/p/9500737.html

时间: 2024-08-09 14:48:34

JavaSE学习(二):进制转换-数据类型转换-Java运算符的相关文章

学习入门---进制转换

常用的进制数制:二进制.八进制.十进制.十六进制··· 计算机中采用的是二进制,因为二进制具有运算简单,易实现且可靠为逻辑设计提供了有了的途径.节省设备等优点··· 今天老师推荐了学习的方法:1.分类  2.建模型 并通过画图来讲解不同数制之间的转换关系,让我们更容易理解记忆 二进制转十进制,八进制转十进制: 1. 写底数 2. 写质数 3. 乘系数 4. 相加 十进制转二进制,十进制转八进制: 1. 除2(或8)取余 2. 除到商为0为止 3. 记号余数 4. 余数倒排 二进制转八进制(八进制

java学习之进制转换(指针思想,重在理解掌握)

/** * */package com.dreamly.day01; /** * @author dreamly * */public class ArrayTest { public static void main(String[] args) {// toBin(6);// toO(60); toHex(60); } /** * 十进制转二进制 * @param num * @param base * @param offset */ public static void toBin(in

JAVA学习笔记-进制转换

任意进制转换为十进制: 十进制转换为任意进制:

2 Java基础语法(keyword,标识符,凝视,常量,进制转换,变量,数据类型,数据类型转换)

1:keyword(掌握) (1)被Java语言赋予特定含义的单词 (2)特点: 所有小写. (3)注意事项: A:goto和const作为保留字存在. B:类似于Notepad++这种高级记事本会对keyword有特殊颜色标记 2:标识符(掌握) (1)就是给类,接口.方法,变量等起名字的字符序列 (2)组成规则: A:英文大写和小写字母 B:数字 C:$和_ (3)注意事项: A:不能以数字开头 B:不能是java中的keyword C:区分大写和小写 (4)常见的命名规则(见名知意) A:

2.5 数据类型转换与进制转换

2.5.1    数值类型转换 源类型 目标类型 转换方法 示例 bool.byte.char.double.decimal.float.long.short.sbyte.string.uint.ulong.ushort int Convert.ToInt32(Type value) int num = Convert.ToInt32("30"); string int int.Parse(string s) int num = int.Parse("20"); s

Java基础复习之一篇:关健字,标识符,注释,常量,进制转换,变量,数据类型,数据类型转换

1.关健字 1.1.被Java语言赋予特定意义的单词(如:class,interface,public ,static) 1.2.全部是小写 1.3.注意事项(goto和const作为关健字保留起来) 2.标识符 2.1.给类,接口,方法,变量起名字的字符 2.2.组成规则(A:英文大小写,B:数据,C:$ _) 2.3.注意事项(不能为数字开头,不能是java中的关健字,区分大小写) 2.4.常见的命名规则(见名知意) A:包   全部是小写 单级包:小写 如:peng,com 多级包:小写

03 php 数据类型:整数,进制转换,浮点,字符,布尔,数组,空类型,类型转换,算术运算,比较运算

03 数据类型:整数,进制转换,浮点,字符,布尔,数组,空类型,类型转换, 算术运算,比较运算,逻辑运算,短路现象, 三目运算符,字符型运算: 数据类型 整体划分 标量类型: int, float, string, bool 复合类型: array,     object 特殊类型: null,     resouce 整数类型int, integer 3种整数表示法 十进制写法:123: $n1 = 123; 八进制写法: 0123 $n2 = 0123; 十六进制写法: 0x123 $n3

【ACM】大数据+任意进制转换 jobdu 1080

[九度OJ] 1080 进制转换 题目描述: 将M进制的数X转换为N进制的数输出. 输入: 输入的第一行包括两个整数:M和N(2<=M,N<=36).下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出. 输出: 输出X的N进制表示的数. 样例输入: 16 10 F 样例输出: 15 提示: 输入时字母部分为大写,输出时为小写,并且有大数据. 这题考察的比较综合,进制转换+大数据 很久没有做ACM的题目了,且拿这个练练手,大整数模板是用的王道论坛的模板-贴出来备

2014.12.20学习进制转换

进制转换:二进制,八进制,十进制,十六进制. (一)二进制转十进制: 1.写2 2.标指数,从右向左,从0开始依次标记 3.乘系数,一一对应. 4.相加. 例:二进制数1101转十进制数* 1.2   2   2   2 2.2^3   2^2   2^1   2^0 3.1*2^3   1*2^2   0*2^1   1*2^0 4.1*2^3+1*2^2+0*2^1+1*2^0=13 (二)十进制转二进制:除2取余 1.用竖式,对十进制数依次除2,记录每一步余数. 2.一直除到商0为止,从下