首页 > 编程语言 >Java 学习 day02

Java 学习 day02

时间:2024-09-17 21:48:34浏览次数:8  
标签:Java 00000000 day02 System 学习 ++ println false out

java day02

DtaaType 数据类型

Java是一门强类型的语言。

1、变量

变量:指的是在Java程序运行过程中,其值可以发生改变的量。

定义一个变量的语句定义格式:

//数据类型 变量名 = 初始化值;

注意事项:

1、变量要进行初始化赋值,才可以进行使用
2、在同一作用域下,变量名不能重复,可以大小写不一样,严格区分大小写的。
3、java中整数默认是int类型,要想定义一个long类型的变量,需要在值的末尾加上L或者l,推荐使用L
4、java中小数默认是double类型,要想定义一个float类型的变量,需要在值的末尾加上F或者f,推荐使用F

2、数据类型

1、基本数据类型:

/*整数类型:		所占的字节数		可表示的范围
  	byte			1		   -2^7~2^7-1
    short       	2          -2^15 ~ 2^15-1
    int         	4          -2^32 ~ 2^32-1    
    long        	8          -2^63 ~ 2^63-1  
    
  小数类型:		 
    float			4		   
    double			8
   
   布尔类型:		 
    boole			1
    
   字符类型:
   	char			根据具体的编码来定,不同的编码下,java中一个字符所占的字节数是不同的
*/        

2、引用数据类型:【暂时没学】

3、代码举例

public class DataTypeDemo1{
	public static void main(String[] args) {
		//数据类型 变量名 = 初始值
        //定义一个byte类型的变量
        byte b1 = 100;
        System.out.println(b1);//直接打印这个变量,实际上打印的是该变量存储的值
        
        //定义一个short类型的变量
        short s1 = 200;
        System.out.println(s1);
        
        //定义一个int类型的变量
        int i1 = 300;
        System.out.println(i1);
        //int i2 = 30000000000000;超出int类型可表示的范围
        long i2 = 30000000000000L;
        
        System.out.println(i2);
        //定义一个float类型的变量
        float f1 = 12.34F;
        System.out.println(f1);
        
        //定义一个double类型的变量
        double d1 = 33.45;
        System.out.println(d1);

        //定义一个布尔类型的变量
        boolean b2 = true;
        System.out.println(b2);

        //创建一个字符变量
        char c1 = 'a';
        System.out.println(c1);
	}
}

3、数据类型转换

自动数据类型转化

//在Java中,变量参与运算的时候,会自动提升数据类型,会转化为计算中数据类型最大的
byte,short,char -> int -> long -> float -> double

强制数据类型转化

/*语句定义格式:
    目标数据类型 变量名 = (目标数据类型)(要转型的值或表达式)
注意:今后尽量不要用,可能会损失精度。
*/

代码示例

public class DataTypeDemo2 {
    public static void main(String[] args) {
        //哪句是编译失败的呢?为什么呢?
//        byte b1=3,b2=4,b; //不推荐这么定义
        //工作的时候,推荐一个变量定义占用一行
        byte b1=3;
        byte b2=4;
        byte b;
//        b=b1+b2; // 如果是变量参与运算,会先自动类型转换,做完运算后,再判断是否可以进行赋值
        //强制类型转换
        b=(byte)(b1+b2);
        System.out.println(b);
//        b=3+4; // 如果是常量参与运算,会先进行运算,运算后,会判断结果是否在范围内,如果在直接赋值
    }
}

强制数据类型转化案例

public class DataTypeDemo3 {
    public static void main(String[] args) {
        byte b = (byte)130; // 无法直接赋值,原因是130超过了byte的最大范围,需要强制类型转换
        System.out.println(b); // -126

    }
}
//计算过程
/*
    计算机中的数据都是采用补码进行运算的
    130的补码:00000000 00000000 00000000 10000010

    做强制类型转换:
    补码:  (00000000 00000000 00000000) 10000010
    补码:   10000010
    已知补码求原码:
            符号位      数值位
    补码:    1        0000010
    反码:    1        0000001
    原码:    1        1111110
    -----------------------------
           64 + 32 + 16 + 8 + 4 + 2 = 126
           因为符号位是1,所以最终的结果是-126
 */

练习

请写出下列程序的结果

System.out.println('a');
System.out.println('a'+1);
System.out.println("hello"+'a'+1);
System.out.println('a'+1+"hello");
System.out.println("5+5="+5+5);
System.out.println(5+5+"=5+5");
/*
注意:
        1、+ 号两边若都没有字符串,这个就是最普通的算数加法运算
        2、若有字符参与算数运算的话,java虚拟机会将该字符所对应的ASCII码表中的数值进行转换
            记住三个特殊的字符对应的ASCII码值:
                '0' - 48
                'A' - 65
                'a' - 97
        3、同级别优先级的符号,从左向右进行运算
        4、+ 号两边若任意一边是字符串,而是做字符串的左右拼接操作,拼接结束后是一个新的字符串
*/

答案

public class DataTypeDemo4 {
    public static void main(String[] args) {
        //代码格式化的快捷键:ctrl + alt + L
//        System.out.println('a'); // a
//        System.out.println('a' + 1); // 98

        System.out.println("hello" + 'a' + 1); // helloa1
        System.out.println('a' + 1 + "hello"); // 98hello
        System.out.println("5+5=" + 5 + 5); // 5+5=55
        System.out.println(5 + 5 + "=5+5"); // 10=5+5

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

4、运算

1、赋值运算

1、赋值运算符:= ,+= , -= ,*= ,/= ,%=

代码示例

public class FuZhiDemo1 {
    public static void main(String[] args) {
        int a = 3;

//        a += 4;
//        System.out.println(a);

        a-=5;
        System.out.println(a);

    }
}




/*
    short s=1, s = s+1;
    short s=1, s+=1;

 */
public class FuZhiDemo2 {
    public static void main(String[] args) {
//        short s = 1;
//        s = (short) (s + 1);
//        System.out.println(s);

        short s = 1;
        s += 1; // s = (short) (s + 1);
        System.out.println(s);

    }
}

2、关系运算

1、关系运算符:> ,< ,>=, <=, !=, ==

关系表达式的结果一定是boolean类型的

2、代码示例

public class GuanXiDemo1 {
    public static void main(String[] args) {
        int a = 3;
        int b = 4;
        System.out.println(a==b); // false
//        System.out.println(a=b); // 4
        System.out.println(a>b);
        System.out.println(a<b);
        System.out.println(a<=b);
        System.out.println(a>=b);
        System.out.println(a!=b);
    }
}

3、逻辑运算

1、逻辑运算符:& , | , ^ , ! , && , ||

逻辑运算符,参与运算的参数类型是boolean,结果也是一个boolean类型的

2、代码示例

public class LuoJiDemo1 {
    public static void main(String[] args) {
        int a = 3;
        int b = 4;
        // & 有false则false
//        System.out.println((a++>3)&(b++>4)); // false & false = false
//        System.out.println("a: " + a + ", b: " + b);
//        System.out.println((a++>3)&(b++==4)); // false & true = false
//        System.out.println((a++==3)&(b++>4)); // true & false = false
//        System.out.println((a++==3)&(b++==4));// true & true = true

        // && 短路与 当左边为false的时候,右边表达式不会执行,结果为false
//        System.out.println((a++ > 3) && (b++ > 4)); // false && false = false
//        System.out.println("a: " + a + ", b: " + b);
//        System.out.println((a++ > 3) && (b++ == 4)); // false && true = false
//        System.out.println((a++ == 3) && (b++ > 4)); // true && false = false
//        System.out.println((a++ == 3) && (b++ == 4));// true && true = true


        // | 有true则true
//        System.out.println((a++ > 3) | (b++ > 4)); // false | false = false
//        System.out.println((a++ > 3) | (b++ == 4)); // false |  true = true
//        System.out.println((a++ == 3) | (b++ > 4)); // true | false = true
//        System.out.println((a++ == 3) | (b++ == 4));// true | true = true
//        System.out.println("a: " + a + ", b: " + b);

        // || 短路或 当左边为true的时候,右边表达式不会执行,结果为true
//        System.out.println((a++ > 3) || (b++ > 4)); // false || false = false
//        System.out.println((a++ > 3) || (b++ == 4)); // false ||  true = true
//        System.out.println((a++ == 3) || (b++ > 4)); // true || false = true
//        System.out.println((a++ == 3) || (b++ == 4));// true || true = true
//        System.out.println("a: " + a + ", b: " + b);

        // System.out.println(100>a>10) // java中不允许出现连续比较
        System.out.println(a>10 && a<100);


        // ^ 异或 相同则false,不同则true
//        System.out.println((a++ > 3) ^ (b++ > 4)); // false ^ false = false
//        System.out.println((a++ > 3) ^ (b++ == 4)); // false ^  true = true
//        System.out.println((a++ == 3) ^ (b++ > 4)); // true ^ false = true
//        System.out.println((a++ == 3) ^ (b++ == 4));// true ^ true = false

        //! 将true变成false, false变成true
//        System.out.println(!(a++ > 3));


    }
}

4、三目运算

1、三目运算符【三元运算符】:

​ 语句定义格式:

​ (关系表达式)?表达式1:表达式2;

​ 这里的表达式1和表达式2必须是要有一个结果值的。关系表达式成立接表达式1,反之接表达式2

2、代码示例

//需求:求两个数中的最大值
public class SanMuDemo1 {
    public static void main(String[] args) {
        int a = 3;
        int b = 8;

        int x = (a > b) ? a : b;
        System.out.println(x);
        (a > b) ? System.out.println(a) : System.out.println(b);
    }
}

5、算术运算

1、算数运算符:+, -, *, /, %, ++, --

java中,一个算数表达式最终的结果数据类型,是由参与运算最大的那个参数类型决定的。

2、代码示例

public class SuanShuDemo1 {
    public static void main(String[] args) {
        int a = 3;
        int b = 4;
//        System.out.println(a+b);
//        System.out.println(a-b);
//        System.out.println(a*b);
//        System.out.println(a/b); // 整除,保留整数部分
//        System.out.println(a%b);


        System.out.println(a*1.0/b);
    }
}

3、++1 与--1

/*++: 自加1
    ++在后,先赋值再进行自加1;++在前,先自加1,再赋值参与运算
--: 自减1
    --在后,先赋值再进行自减1;--在前,先自减1,再赋值参与运算
*/


public class SuanShuDemo2 {
    public static void main(String[] args) {
        /**
         *  单独使用
         */
        int a = 3;
        int b = 4;
        System.out.println("a: " + a);
        System.out.println("b: " + b);
        System.out.println("-----------------------------");
//        a++;
//        b++;
//        ++a;
//        ++b;
//        System.out.println("a: " + a);
//        System.out.println("b: " + b);

        /**
         *  混合使用
         */
//        int x = a++;
//        System.out.println(x); // 3
        int x2 = ++a;
        System.out.println(x2);

    }
}

6、位运算

1、

位运算符:针对数值2进制形式的计算
  & | ^ ~  >>  << >>>

位运算符,参与运算的是数值,结果也是一个数值

代码示例与原理

public class WeiDemo1 {
    public static void main(String[] args) {
        int a = 3;
        int b = 4;

//        System.out.println(a&b);
//        System.out.println(a|b);
//        System.out.println(a^b);
        System.out.println(~a);
    }
}
/*
    计算机中所有的运算都是采用补码进行的
    3的补码:00000000 00000000 00000000 00000011
    4的补码:00000000 00000000 00000000 00000100

    &:有0则0
        00000000 00000000 00000000 00000011
      &
        00000000 00000000 00000000 00000100
       -------------------------------------
        00000000 00000000 00000000 00000000

    |:有1则1
        00000000 00000000 00000000 00000011
      |
        00000000 00000000 00000000 00000100
       -------------------------------------
        00000000 00000000 00000000 00000111

    ^:相同则0,不同则1
        00000000 00000000 00000000 00000011
      ^
        00000000 00000000 00000000 00000100
       -------------------------------------
        00000000 00000000 00000000 00000111

    ~: 0变成1,1变成0
        00000000 00000000 00000000 00000011
      ~
        -------------------------------------
   补码  11111111 11111111 11111111 11111100
   反码  11111111 11111111 11111111 11111011
   原码  10000000 00000000 00000000 00000100
   -----------------------------------------
   -4

 */

2、

 >>:右移,整体补码向右移动若干位,右边多出的部分丢弃,若最高位是1,左边就用1补齐;反之用0补齐
 <<:左移,整体补码向左移动若干位,左边多出的部分丢弃,右边用0补齐
 >>>:无符号右移,整体补码向右移动若干位,右边多出的部分丢弃,左边无论最高位是0还是1,都用0补齐

代码示例与原理

public class WeiDemo2 {
    public static void main(String[] args) {
        System.out.println(24>>2); // 24/2^2 = 6
        System.out.println(2<<4);  // 2*2^4 = 32

        System.out.println(-24>>>2); // 1073741818
    }
}
/*
    24的补码:00000000 00000000 00000000 00011000

            00000000 00000000 00000000 00011000
      >>2:  00000000 00000000 00000000 00000110(00)
      ------------------------------------------------

    2的补码:00000000 00000000 00000000 00000010

                00000000 00000000 00000000 00000010
     <<4: (0000)00000000 00000000 00000000 00100000


    -24
    原码:10000000 00000000 00000000 00011000
    反码:11111111 11111111 11111111 11100111
    补码:11111111 11111111 11111111 11101000
    ------------------------------------------
         11111111 11111111 11111111 11101000
   >>>2: 0011111111 11111111 11111111 111010(00)

 */

标签:Java,00000000,day02,System,学习,++,println,false,out
From: https://www.cnblogs.com/qianzhiqiang798/p/18417582

相关文章

  • 基于java的城市公交查询系统Vue3+SpringBoot
    目录功能和开发技术介绍具体实现截图开发核心技术介绍:技术创新点vue3和vue2的区别:核心代码部分展示非功能需求分析系统开发流程系统运行步骤软件测试源码获取功能和开发技术介绍本课题拟采用主流的MVC架构、开发工具idea、java语言编程、MySQL数据库技术、Vue.js技......
  • java pom两个模块需要互相引用怎么办
    在Maven项目中,如果两个模块(通常称为子模块)需要互相引用,这通常意味着你的项目结构可能需要重新考虑或调整。Maven默认不支持直接的循环依赖,因为这会导致构建过程中的死锁。但是,有几种方法可以处理这种情况或避免它:1.重新设计项目结构首先,考虑是否有可能重新设计项目结构来避免循环......
  • 【F156】基于Springboot+vue实现的驾校预约学习系统
    主营内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。收藏点赞不迷路,关注作者有好处项目描述一切系统都要遵循系统设计的最基本全过程,系统也是如此。它还要通过市场调查、需求分析报告、汇总设计、详尽设计......
  • 【Java 优选算法】双指针(下)
    欢迎关注个人主页:逸狼创造不易,可以点点赞吗~如有错误,欢迎指出~有效三角形的个数题目链接解法解法1:暴力枚举--->O(n^3)解法2:利用单调性,使用双指针来解决---->O(n^2)优化:对整个数组进行排序先固定最大数在最大数的左区间内,使用双指针算法,快速统计出符合要......
  • Java - 2 变量
    Java-2变量变量是程序的基本组成单位变量的三个基本要素:类型+名称+值声明变量=分配内存先声明,后使用变量在同一个作用域不可以重名数据类型基本数据类型:数值型/字符型(本质是整数)/布尔型引用数据类型:类(class)/接口(interface)/数组([])/*数值型-整数*/......
  • JavaScript:对组织值进行排序
    要对组织值进行排序,你可以使用JavaScript中的数组排序方法 sort()。下面是一些示例代码,展示如何对不同类型的组织值进行排序:示例1:对数字数组进行排序constnumbers=[5,2,9,1,5,6];//使用sort()方法进行升序排序numbers.sort((a,b)=>a-b);console.log(n......
  • Java轻量级测试框架的实现与使用 总篇
    Java轻量级测试框架的实现与使用总篇java8,jdk8,测试,assert背景每次写算法题,用例不过总要到本地调试一下,总觉得测试代码写起来又没营养又很麻烦,即便是借助junit测试框架也很麻烦,太重了,写完又觉得测试代码不美观需要删掉。正好在学习spring过程中接触到注解,研究其原理时......
  • 前端JavaScript面试重难点: 闭包+内存泄漏+垃圾回收机制
    前置知识!!!闭包是Javascript语言的一个重难点,也是它的特色,很多高级应用都要依靠闭包来实现。在各种专业文献上学习"闭包"的时候,就一个感觉–“抽象”!特别是学习内存泄漏的时候,没想明白为什么使用闭包的时候不及时清除函数中的元素会导致内存泄漏,直到我的......
  • D10【python接口自动化学习】-python基础之内置数据类型
    day10列表学习日期:20240917学习目标:内置数据类型--列表:如何处理同类数据?学习笔记:列表的定义创建列表#创建列表colours=['red','blue','green']print(colours)#将列表打印出来['red','blue','green']print(type(colours))#<class&#......
  • Java 如何计算jar包的HASH哈希值
    在做授权系统的时候用到了一个小功能发出来分享一下。全部代码如下:importjava.io.File;importjava.io.FileInputStream;importjava.io.InputStream;importjava.net.URISyntaxException;importjava.security.MessageDigest;importjava.security.NoSuchAlgorithmExcepti......