Day03

JAVA学习

类型转换

public class Dem3 {
    public static void main(String[] args) {
        int i = 128;
        byte b = (byte)i;//内存溢出,Byte最大127

        //强制转换      (类型)变量名     高———低
        //自动转换      低到高

        int j = 128;
        double d = j;

        //byte,short,char->int->long->float->double

        System.out.println(i);
        System.out.println(b);
        System.out.println("========================");
        System.out.println(j);
        System.out.println(d);
        
    }

}

  • 注意
  1. 不能对布尔值进行转换
  2. 不能把对象类型转换为不相干的类型
  3. 在把高容量转换到低容量的时候,强制转换
  4. 转换的时候可能存在内存溢出,或者精度丢失问题

一些小技巧

public class Dem4 {
    public static void main(String[] args) {
        //操作数比较大的时候,注意溢出问题
        //数字之间可以用下划线分割,输出时不会输出下划线
        int money = 10_0000_0000;
        int years = 20;
        System.out.println("钱:" + money);
        int total = money*years;
        System.out.println(total);//-1474836480,计算时溢出了
        long total2 = money*years;
        System.out.println(total2);//-1474836480,由int转为long前已经存在溢出了
        //可以这样
        long total3 = money * (long)years;//先把一个整数转换为long
        System.out.println(total3);

        //L     l       建议写大写的L小写已看成是1
    }
}

变量

public class Dem5 {

    //类变量   static
    static double salary = 2500;//salary工资

    //属性:变量

    //实例变量:从属于对象;不初始化会返回默认值 0   0.0
    //布尔值:默认是false
    //除了基本类型,其余默认值都是null
    String name;
    int age;

    //main方法
    public static void main(String[] args) {

        //局部变量:必须声明和初始化
        int i = 10;
        System.out.println(i);

        //变量类型     变量名字 = new Dem5()
        Dem5 dem5 = new Dem5();
        System.out.println(dem5.age);
        System.out.println(dem5.name);

        //类变量   static
        System.out.println(salary);

    }

    //其他方法
    public void add(){

    }

}

命名规范

  • 所有变量、方法、类名:见名知意
  • 类成员变量:首字母小写和驼峰原则:monthSalary
  • 局部变量:首字母小写和驼峰原则
  • 常量:大写字母和下划线:MAX_VALUE
  • 类名:首字母大写和驼峰原则:People,GoodMan
  • 方法名:首字母小写和驼峰原则:run(),runRun()

常量

public class Dem6 {
    //final常量修饰符
    //修饰符不存在先后顺序
    static final double PI = 3.14;
    //final static double PI = 3.14;也正确

    public static void main(String[] args) {
        System.out.println(PI);
    }
}

运算符

二元运算

package operator;

public class Dem01 {
    public static void main(String[] args) {
        // 二元运算
        //Ctrl + D:复制当前行到下一行
        int a = 10;
        int b = 20;
        int c = 25;
        int d = 25;
        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/(double)b);
    }
}


package operator;

public class Dem02 {
    public static void main(String[] args) {
        long a = 123123123123123123L;
        int b = 123;
        short c = 10;
        byte d = 9;
        //当运算时有一个long结果就为long
        //用short,byte,char运算时结果一般为int或者short
        System.out.println(a+b+c+d);//Long
        System.out.println(b+c+d);//Int
        System.out.println(c+d);//Short
    }
}

关系运算符

package operator;

public class Dem03 {
    public static void main(String[] args) {
        //关系运算符返回的结果:正确,错误      布尔值
        int a = 1;
        int b = 2;
        int c = 3;

        System.out.println(c%b);//c/a  3/2 =1...1

        System.out.println(a>b);
        System.out.println(a<b);
        System.out.println(a==b);
        System.out.println(a!=b);
    }
}

自增运算符

package operator;

public class Dem04 {
    public static void main(String[] args) {
        //++  --    自增,自减   一元运算符
        int a = 2;

        int b = a++;//先赋值后自增
        System.out.println(b);
        System.out.println(a);
        int c = ++a;//先自增后赋值
        System.out.println(c);
        System.out.println(a);

        //幂运算   2^3 = 2*2*2 = 8   用一些工具类来操作
        //自动补全返回值类型     Ctrl + Alt + V
        double pow = Math.pow(3, 2);
        System.out.println(pow);
    }
}

逻辑运算符

package operator;

//逻辑运算符
public class Dem05 {
    public static void main(String[] args) {
        //与     或       非
        //and    or       取反
        boolean a = true;
        boolean b = false;

        System.out.println("a && b:"+(a&&b));//逻辑与运算:两个变量都为真,结果才为true
        System.out.println("a || b:"+(a||b));//逻辑或运算:两个变量有一个为真,则结果才为true
        System.out.println("!(a && b):"+!(a&&b));//逻辑非运算:如果是真,则变为假,否则,相反

        //短路运算
        int c = 2;
        boolean d = (c<1)&&(c++<1);//c<1为false,不执行&&后面的
        System.out.println(d);
        System.out.println(c);
    }
}

位运算符

package operator;

public class Dem06 {
    public static void main(String[] args) {
        /*位运算
        A = 0011 1100
        B = 0000 1101

        A&B = 0000 1100     一位一位来,00得0,01得0,11得1
        A|B = 0011 1101     一位一位来,00得0,01得1,11得1
        A^B = 0011 0001     异或,相同为0,相异为1
        ~B  = 1111 0010     取反,0变1,1变0

        2*8 = 16    2*2*2*2
        2<<3 = 16       常用在计算底层得一些运算
        0000 0000       0

        0000 0010       2
               ↑ 从这开始
        0000 0100       4
              ↑ 移一位
        0000 1000       8
             ↑ 再移一位
        0001 0000       16
           ↑ 再移一位
        共移了三位,所以 2<<3 = 16
         */
        System.out.println(2<<3);
    }
}

扩展赋值运算符

package operator;

public class Dem07 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

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

        //字符串连接符
        System.out.println(a+b);
        System.out.println(""+a+b);//String + ...,会转成字符串
        System.out.println(a+b+"");
    }
}

条件运算符

package operator;

public class Dem08 {
    public static void main(String[] args) {
        //x ? y : z
        //如果x==true,则结果为y,否则结果为z
        int score = 80;
        String type = score<60?"不及格":"及格";
        //if也可以
        System.out.println(type);
    }
}

运算符优先级

优先级(高到低)运算符结合性
1()、[]、{}从左向右
2!、+、-、~、++、–从右向左
3*、/、%从左向右
4+、-从左向右
5«、»、>>>从左向右
6<、<=、>、>=、instanceof从左向右
7==、!=从左向右
8&从左向右
9^从左向右
10|从左向右
11&&从左向右
12||从左向右
13?:从右向左
14=、+=、-=、*=、/=、&=、|=、^=、~=、«=、»=、>>>=从右向左
  • 为了避免运算符优先级造成得错误,可以多打(),方便自己理解

包机制

  • 格式
package pkg1.pkg2.pkg3...;
  • 一般用公司域名倒置作为包名
package com.baidu.www;
  • 导包
import pkg1.pkg2.(classname|*);

*.导入包内所有类

JavaDoc

参数信息

/** */

  • @author 作者名
  • @version 版本号
  • @ since 指明需要最早使用得jdk版本
  • @param 参数名
  • @return 返回值情况
  • @throws 异常抛出情况

加在哪,就是哪里得注释

在这里插入图片描述

  • 打开index.html

Scanner对象

  1. 导包
import java.util.Scanner;
  1. 基本语法
Scanner scanner = new Scanner(System.in);

next()与hasNext()

package com.yjj.base.scanner;

import java.util.Scanner;

public class Dem01 {
    public static void main(String[] args) {

        //创建一个扫描器对象,用于接收键盘数据
        Scanner scanner = new Scanner(System.in);
        System.out.println("使用next方式接收:");

        //判断用户有没有输入字符串
        if(scanner.hasNext()){
            //使用next方式接收
            String string = scanner.next();
            System.out.println("用户输入了:"+string);
        }
        //凡是属于IO流得类如果不关闭会一直占用资源,用完就关
        scanner.close();
    }
}

nextLine()与hasNextLine()

package com.yjj.base.scanner;
import java.util.Scanner;
public class Dem02 {
    public static void main(String[] args) {
        //从键盘接收数据
        Scanner scanner = new Scanner(System.in);

        System.out.println("使用nextLine方式接收:");

        //判断是否还有输入
        if(scanner.hasNextLine()){
            String str = scanner.nextLine();
            System.out.println("用户输入了:"+str);
        }
        scanner.close();
    }
}

next()与nextLine()得区别

  • next()

    1. 一定要读取到有效字符后才可以结束输入。
    2. 对输入有效字符之前遇到的空白,next()方法会自动将其去掉。
    3. 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
    4. next()不能得到带有空格的字符串。
  • nextLine()

    1. 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。
    2. 可以获得空白。

两个小案例

判断用户输入的是整数还是小数
package com.yjj.base.scanner;

import java.util.Scanner;

public class Dem03 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        //从键盘接收数据
        int i = 0;
        float f = 0.0f;

        System.out.println("请输入整数");


        if(scanner.hasNextInt()){
            i = scanner.nextInt();
            System.out.println("整数数据:"+i);
        }else{
            System.out.println("输入得不是整数!");
        }
        System.out.println("请输入小数");


        if(scanner.hasNextFloat()){
            f = scanner.nextFloat();
            System.out.println("小数:"+f);
        }else{
            System.out.println("输入得不是小数!");
        }
    }
}

根据用户输入的数字求平均数和总和
package com.yjj.base.scanner;
import java.util.Scanner;
public class Dem05 {
    public static void main(String[] args) {
        //输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过非数字来结束输出并输出结果
        Scanner scanner = new Scanner(System.in);

        //和
        double sum = 0;
        //计算输入了多少个数字
        int m = 0;

        System.out.println("请输入数字,回车确认,非数字结束");

        //通过循环判断是否还有输入,并在里面对每一次求和统计
        while (scanner.hasNextDouble()){
            double x = scanner.nextDouble();
            m++;
            sum += x;
            System.out.println("你输入了第"+m+"个数据,当前结果为:"+sum);
        }
        System.out.println(m + "个数的和为" + sum);
        System.out.println(m + "个数的平均值为" + (sum/m));

        scanner.close();
    }
}

反编译

  1. 点击项目结构
  2. 复制路径
  3. 打开路径下的文件找到当前项目的.class
  4. 找到项目的.java
  5. 将.class复制到.java文件夹下
  6. 回到IDEA,多了个01图标的文件,双击即可
  • 每一个字符串都有一个由特定算法得出的hashCode

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值