javaSE(从0开始)day02

javaSE简介

Java SE(Java Standard Edition)是 Java 平台的基础版本,也是 Java 技术的核心。它提供了完整的 Java 核心 API(如字符串处理、集合框架、输入输出、多线程、网络编程等),是开发桌面应用、控制台程序和 Java Web 后端的基础。Java SE 的主要特点和组件包括:

核心特性:

  1. 跨平台性
    通过 JVM(Java Virtual Machine)实现 “一次编写,到处运行”,支持 Windows、Linux、macOS 等多种操作系统。

  2. 面向对象
    支持类、继承、多态、封装等面向对象编程范式。

  3. 自动内存管理
    垃圾回收机制(GC)自动回收不再使用的内存,减少内存泄漏风险。

  4. 安全性

    • 提供沙箱机制(Sandbox)限制程序访问权限。
    • 字节码验证和安全管理器增强程序安全性。
  5. 多线程支持
    内置Thread类和java.util.concurrent包,简化并发编程。

一、输出Math类的常用方法:

        System.out.println("圆周率"+Math.PI);
        System.out.println("绝对值"+Math.abs(-3.22));
        System.out.println("常数e:"+Math.E);
        System.out.println("幂运算"+Math.pow(2,5));
        System.out.println("开平方根:"+Math.sqrt(9));
        System.out.println("四舍五入:"+Math.round(6.89));
        System.out.println("[0,1)随机数:"+Math.random());
        System.out.println("[0,100)随机数:"+Math.random()*100);
        System.out.println("[6,18)随机数:"+Math.random()*12+6);
        //求【min,Max)随机数  Math.random()*(max-min)+min
        System.out.println("最大值"+Math.max(4,9));
        System.out.println("最小值:"+Math.min(4,9));
        System.out.println("计算e的x次方"+Math.exp(2));//e^2
        System.out.println("计算log以10为底的对数"+Math.log10(100));//结果2
        System.out.println("计算log以e为底的对数"+Math.log(4));

 二、输出当前计算机的日期、时间

        System.out.println("当前日期:"+ LocalDate.now());
        System.out.println("当前的时间:"+ LocalTime.now());
        System.out.println("当前日期加时间:"+ LocalDateTime.now());
        System.out.println("获取年"+LocalDate.now().getYear());
        System.out.println("获取当前月(英文):"+LocalDate.now().getMonth());
        System.out.println("获取当前月(中文):"+LocalDate.now().getMonthValue());
        System.out.println("获取一年的日"+LocalDate.now().getDayOfYear());
        System.out.println("获取一月的日"+LocalDate.now().getDayOfMonth());
        System.out.println("获取一周的日"+LocalDate.now().getDayOfWeek());
        System.out.println("获取当前的时:"+LocalTime.now().getHour());
        System.out.println("获取当前的分:"+LocalTime.now().getMinute());
        System.out.println("获取当前的秒"+LocalTime.now().getSecond());

三、变量与常量

1. 变量名的定义(小驼峰) : 数字 字母 下划线 $符号可以做变量名,其中数字不能做首字母。

2.变量的使用:

        必须赋值后使用 

        同范围内变量名不能重名   

        值和数据类型要对应,在合理的取值范围内

        int a;
        a=10;  //int a =10; 两种皆可
        System.out.println(a);//10

3.常量: 不可改变的值,或者被final修饰的变量

        final double PI=3.14;//被final修饰的变量表示为常量,之不可发生改变  常量名大写
        System.out.println("周长:"+2*PI*3);
//      PI=3.1415  //报错,常量值不可发生改变
        System.out.println("面积:"+PI*3*3);

四、数据类型

 1.基本数据类型:

                   整型(Byte 1字节 short2字节 int4字节 long8字节) 浮点型(float 4字节)(+-3.4E38) double 8字节(+-1.79E308))

                    字节型 char 2字节 0 ~ 65535

                    布尔型 true false

        byte b=127;   //byte 1个字节,取值范围-128 ~ 127
        System.out.println(b);

        short s=32767;   //short 2字节:取值范围-32768~32767
        System.out.println(s);

        int i=2147483647;    //int 4宁节,取值范用-2147483648~2147483647
        System.out.println(i);

        long l1 = 2147483648L;   //long  8字节,long类型后南值要加L
        System.out.println(l1);

        float f1 =3.45F;//float类型后面需要加F
        System.out.println(f1);
       // 科学计数法表示:
         float f2=  3.1415E2F;
        System.out.println(f2);//314.15

         double d =3.21;
        System.out.println(d);

        char c1= '中';  //取值范围 0 ~  65535
        System.out.println(c1);

        char c2='A';
        char c3=97;  //A-65  a-97   0-48
        System.out.println(c2);
        System.out.println(c3);


        boolean b1 =true;
        boolean b2= false;
        System.out.println(b1);
        System.out.println(b2);

2.引用数据类型: 字符串String

        String str="";//包含0-n个字符
        String str1="白日依山尽,黄河入海流";
        String str2= str1;//将str1 指向的地址赋值给str2
        System.out.println(str);
        System.out.println(str1);
        System.out.println(str2);
        System.out.println(str1.charAt(0));  //引用数据类型有很多的方法

3.类型转换 

      (1).自动类型转换:(小————大)自动类型转换指的是容量小的数据类型可以自动转换为容量大的数据类型

      (2). 强制类型转换:(大————小)小范国的数据类型 变量名 =(小范国的数据类型)大范围的变量、值;

        //自动
        byte b= 10;
        int i1=b;
        System.out.println(i1);
        char c  ='0';
        int i2=c;
        System.out.println(i2);  //48
        float f= i2;//int i2--->float f
        System.out.println(f);
        int l1 = 2147483647;
        float f3 = 11;
        System.out.println(f3);

        //强制:
        int i4=15;
        byte b3=(byte)i4;  //int --> byte 强制类型转换
        System.out.println(b3);

        int i5=15;
        char c4=(char)i5;  //int --> char 强制类型转换
        System.out.println(c4); //输出为字符
        System.out.println(1/2);

          (3)整数————>整数 溢出 结果不一样

        int i6 =129;
        byte b4=(byte)i6;
        System.out.println(b4);  //-127

           (4)浮点数-->整数 超过整数取值范围,显示整数的最大值或最小值

        float f4 =4.3E15F;
        int i7=(int)f4;
        System.out.println(i7);

   五、运算符

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

       float a1=10.0F;
        int bb= 4;
        System.out.println(a1+bb);
        System.out.println(a1-bb);
        System.out.println(a1*bb);
        System.out.println(a1/bb);//2.5 整数与整数相除,向下取整  结果为整数 ,整数和浮点数,取计算后的结果
        System.out.println(a1%bb);
        //char可以进行运算
        //不同类型进行运算后结果为大范围类型
        char c6='a';
        char c7=(char)(c6+1);
        System.out.println(c7);

        byte b5=12;
        int i9=b5+1;
        System.out.println(i9);

        //byte short char 在进行运算时会进行自动类型提升
        byte b6=127;
        byte b8=1;
        int add1=b6+b8;
        byte add2=(byte)(b6+b8);
        System.out.println(add1);
        System.out.println(add2);

        //javac进行编译操作时已经完成运算
        // .class字节码文件中存储的byte b9 =13;
        byte b9=12+1;
        System.out.println(b9);

 (1)溢出:

      在进行运算时,由于类型的范围不同,进行转换时会出现大类型到小类型转换,装不下,产生溢出:

        //整数运算时右范围限制,超过范围会溢出
        int aa1=-2147483648;
        int bb1=1;
        System.out.println(aa1-bb1);//整形溢出,值时一个不正确的数值,不发生异常
       // System.out.println(b/0);//报错,异常

        //浮点数溢出
        double dd1=0.0/0;
        System.out.println(dd1);//NaN not a number 不是一个数字

        double dd2 =1.0/0;
        System.out.println(dd2);//Infinity  无穷大的数字
        double dd3 =-1.0/0;
        System.out.println(dd3);//-Infinity  无穷小的数字
        double g= 9/10.0;

 (2)精确度:

         浮点数在进行运算时会出现精确度无法精准表达原因:

       (1) 二进制无法精确表示某些十进制小数

      计算机使用二进制来存储浮点数,但许多十进制小数无法用二进制精确表示。例如,十进制的 0.1 在二进制中是一个无限循环小数(0.0001100110011...)。由于计算机内存有限,只能存储近似值,这就导致了精度损失。

         (2)  IEEE 754 标准的限制

      Java 的浮点数遵循 IEEE 754 标准,该标准使用科学计数法的二进制形式表示浮点数,分为符号位、指数位和尾数位。这种表示方式在表示某些数值时会引入舍入误差,特别是在进行加减乘除运算时,误差可能会累积。

        //浮点数无法精准表达
        double x =1-9/10.0;
        System.out.println(x);
        double y =10-9.9;
        System.out.println(y);
         //求误差的绝对值,看是否在某个范围内,s 求两数是否相等
        System.out.println(Math.abs(x-y)<0.000001);

2.复合运算符: 整数的复合运算:+= -= *= /= %=  会进行强制类型转换

n += 100; // 相当于 n = n + 100;
n -= 100; // 相当于 n = n - 100;
n *= 100; // 相当于 n = n * 100;
n /= 100; // 相当于 n = n / 100;
n %= 100; // 相当于 n = n % 100;

3.自增自减:++   --

        用于变量上 *当单独使用:这行只有这个变量++、--位于变量前,或者变最后结果一样,表示进行+1或者-1操作当 * 混合使用:++、--位于变量前,表示先对变量进行改变,再赋值 * ++、--位于变量后,表示先赋值,再对变量进行改变。

public class Main {
    public static void main(String[] args) {
        int n = 3300;
        n++; // 3301, 相当于 n = n + 1;
        n--; // 3300, 相当于 n = n - 1;
        
        // 先执行++n,再执行与100的加法运算,最后将“和”存入变量x
        int x = 100 + ++n; 
        
        // 先执行n与100的加法运算,然后将“和”存入变量x,最后执行n++
        int y = 100 + n++; 
        
        System.out.println(x); // 3401
        System.out.println(y); // 3401
          int a2=10;
//        a2--; //单独使用
//        System.out.println(a2);
//        int b= ++a2;
//        System.out.println("a2:"+a2+"b:"+b);
//        b =--a2;
//        System.out.println("a2:"+a2+"b:"+b);
        int b= a2++;
        System.out.println("a2:"+a2 +"b:"+b);
        b =a2--;
        System.out.println("a2:"+a2 +"b:"+b);

    }
}

4.逻辑运算符  & 、|  、!(非短路)  && 、 || 、 (短路) 

// 与&,左右两边都为true,结果才为true.有假必假,全真则真
// &-非短路 &&-短路与
        System.out.println(true && true);
        System.out.println(false && true);
        System.out.println(true && false);
        System.out.println(false && false);

//        或 | 有真则真,全假为假
//        | -非短路或  ||-短路或
        System.out.println(true || true);
        System.out.println(false || true);
        System.out.println(true || false);
        System.out.println(false || false);
//        !非 取反
        System.out.println(!true);//结果false
        System.out.println(!false);//结果 true

//        短路与非短路
        int num1 = 1;
        int num2 = 0;
//       非短路与
//         System.out.println(num1 <num2 &num1 /num2 >0);  //全部运行报错
//       短路与,左边为假,直接返回左边的值
        System.out.println(num1 <num2 && num1 /num2 >0);
//       非短路或
//       System.out.println(num1>num2  || num1/num2 >0);//不报错  运行左边直接返回值
//      短路或,左边为真,直接返回左边的值
        System.out.println(num1>num2 || num1/num2>0);

5、比较运算符 ==  、!= 、  < 、   > 、  <= 、   >= 、  其中 == 对于基本数据类型比较的是值,对于引用数据类型比较地址 结果为boolean

        boolean flag1=5.3 !=3;
        System.out.println(flag1);
        boolean flag2 =3!=3;
        System.out.println(flag2);
        char c1 ='a';
        boolean b1=c>'z';
        System.out.println(b1);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呼哧呼哧.

栓Q!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值