Idea介绍与Java初识

2023.2.1 星期三

第一章 Idea基本使用技巧

Java文件快捷注释

Java文件快捷注释

特殊注释

TODO注释://TODO指待办事项或未完成的事项。
FIXME注释://FIXME指需要修改的地方。

快捷键
有关ctrl的快捷键操作
 * ctrl + c 赋值
 * ctrl + v 粘贴
 * ctrl + x 剪切 (大剪切术 ctrl + ...a , x , s , v , s)
 * ctrl + a 全选
 * ctrl + f 搜索 在本类中搜索替换
 * ctrl + z 撤销
 * ctrl + y 前进
 * ctrl + o 展示类结构信息,查找方式非常给力
 * ctrl + alt + ⬇ (快捷复制某一行代码)
 * ctrl + alt + t 判断异常的快捷处理
其余快捷键操作
 * 双击shift 全局搜索
 * alt + 回车 快捷补全(光标一定在补全代码的结尾)
 * alt +/⬇ (快捷移动某一行代码)
 * shift + alt + m 快捷拆分方法

第二章 常量 变量 标识符 数据类型

标识符
* 标识符 - 起名字 : 类、接口、方法、变量、常量
* 类、接口 : 大驼峰规则 (首字母大写、之后的单词首字母都大写)
* 变量、方法: 小驼峰规则 (第一个单词的首字母小写)
* 常量 - 静态常量 : 所有字母都大写,多个单词使用下划线拼接
* 包:全部小写(不允许关键字,多个层级使用“.”连接)
常量
*   符号常量 + 字面量常量
*   //符号常量
    public static final int MONEY = 100;
    final double max = 9.9;
*  //字面量常量
    System.out.println(100);
    int i = 50 * 40;  //50  和 40  都属于字面量常量 ,i 是变量
*   基本数据类型 + 引用数据类型
* //基本数据类型
        System.out.println(100);
        System.out.println(100.1);
        System.out.println();
        System.out.println(true);
*//引用数据类型
        System.out.println("今天天气真的太冷了");
变量
* 变量 - 和常量相比,变量的值是在运行期间也是能够改变的,没有final修饰。
* 全局变量: 定义在方法外的变量,整个类中都可以使用到这个变量。
* 	int x = 60; //全局变量
    static int y = 80; //全局变量
* x 和 y都是全局变量,因为定义在类中且声明在方法外 , 区别在于x是非静态的 y 是静态的。
* 加载时机和引用方式:
	* x 是一个非静态的全局变量,初始化的时机是当前S02这个类被创建成对象的时候才会实例化并且数据存储在堆内存中。
	* S02 xx = new S02();所以:这个x只有非静态的方法可以使用,因为静态的方法是在类加载到方法区之后就可以直接调用,而非静态的全局变量
	* 此时还没有被初始化,可以理解为不在一个线上。
	* 
	* y 是一个静态的全局变量,和静态方法一样,在类加载到方法区的时候就被初始化了,初始化的地点同样也在方法区中,
	* 因为时机一样,静态方法是可以直接引用静态全局变量的。
* 局部变量:定义在方法内的变量 ,只在当前定义的方法中才能使用。
*         int m = 10; //局部变量
        //static int n = 20; //静态的局部变量(出错)
*m 因为定义在方法中,所以m是一个局部变量,因为在方法中定义,方法执行变量有效,方法执行完成这个变量没意义,所以JDK设计的
*时候就将局部变量存储在栈内存中跟着方法的生命周期。
*
*n这行报错误了, 因为JDK在设计的时候就是将局部变量存储在栈内存中,这里一旦添加了static 表示又想将n存储在方法区,两者是冲突的
*并且静态局部变量和非静态的方法本身加载时机就不一致,所以这样定义是不合发的。
Exercise
    static int sum = 33;
    public static void mainrr(String[] args) {
        int sum = 65;
        // 为什么输出的是65?
         System.out.println(sum);
        // 在全局变量和局部变量重名的时候,之所以可以定义是因为全局的sum存在方法区中,局部的sum存在占内存中,位置不一样不影响。
        // 就近原则
    }
数据类型
数据类型分为 基本数据类型 和 引用数据类型 。
     *
     *  基本数据类型:8*  byte 1 short 2 int 4(字面量默认) 
     * 	long 8 float 4 double 8(字面量默认)
     *  char 2 boolean*
     * 
     *  转化:
     *  如果同类型之间转化(整数类型或浮点类型)
     *  如果是小类型向大类转化,直接使用大类型接收就可以,自动向上转型。
     *  如果是大类型向小类型转化,需要(小类型)转化,强制向下转型(注意:有可能损失数据)
	public static void mainx1(String[] args) {
        long l = 40000; //此时这里就是典型的自动向上转型
        long l2 = 40000L;
        
        short s = 5000; //理论上讲这里应该会发生一次强制向下转型,但是因为Java在设计的时候考虑到了每次定义都需要
        //强制转化比较麻烦,所以Java直接控制了值得范围,只要不超过short范围就可以直接定义,超出了在按照默认int处理发生强制转型。
    }
     *	不同类之间的转化:
     *	整数转浮点:所以的整数类型无论是哪个一个,只要是转浮点类型都会默认直接转化。
     *	浮点转整数:不管是小类型,一概都需要强制转化(损失精度)*	
     *	
     *
     *	引用数据类型:
     *	String Scanner Random 数组 集合
     *	区别:基本数据类型是直接书写就可以使用,而引用数据类型是需要实例化的。
     *	Scanner sc = new Scanner();
     *	Random r = new Random();
     *	public static void main(String[] args) {
        	Scanner sc = new Scanner(System.in);
        	
        	String str2 = new String("哈哈");
        	String str2 = "嘿嘿";

    	}
     *
Exercise
    **
     * String类型比其他的引用类型更特殊,String这个类是使用final修饰的。这就意味着这个类不能被继承,同时类中的方法
     * 也不能被重写,并且String定义的值虽然没有看见final 但是依然是常量。
     *
     *  String s1 = "哈哈";
     *  String s2 = s1 + "嘿嘿";
     *
     *  3个  哈哈 、 嘿嘿 、 哈哈嘿嘿 , 之所是3个是因为字符串的定义是不可变的字符序列,一旦定义值不能改变(final)
     *
     * 为什么要将String定义成final*  如果String类不是final 那么就可以被继承,也就意味着子类中可以重写父类的方法,  而String又是Java最基本的一个引用数据类型,
     *  一旦方法被重写,运行的时候就意味着我们可以人为的控制JVM的核心代码,那么JDK的安全性无法保障,项目安全性更无法保障,这就相当于
     *Java随时可以植入一个病毒,太可怕了。
     *
     *  典型的牺牲了性能解决了安全性问题,JDK1.0之后,为了能够将String进一步优化,退出了一个新的类,StringBuffer 1.0StringBuilder1.5
     *

第三章 Java运算 算数 比较 赋值 逻辑 三元

算数
    /**
     * 算数运算符 + - * / % ++ --
     * ++ 自增运算   + 1
     * -- =自减运算  - 1
     */
    public static void main1(String[] args) {
        int i = 10;
        i = i++ + i++ - --i;
        --i;
        System.out.println(i); //9
    }
比较
    /**
     * 比较运算符 >= <= > < =  !=  ==  结果:boolean
     */
    public static void main2(String[] args) {
        int m = 10;
        int n = 5;
        System.out.println(m > n);
        System.out.println(m < n);
        System.out.println(m >= n);
        System.out.println(m <= n);
        System.out.println(m == n);
        System.out.println(m != n);
    }
赋值
    /**
     * 赋值运算符 = += -= *= /= %=
     */
    public static void main3(String[] args) {
        int m = 6;
        System.out.println(m += 5); // m = m + 5;
        System.out.println(m %= 3); // m = m % 3;
    }
逻辑
    /**
     * 逻辑运算符 & | ! ^ && ||
     * & 全真为真 一假则假
     * | 一真为真 全假则假
     * ! 结果取反
     * ^ 同假异真
     */
    public static void main4(String[] args) {
        int w = 14;
        int s = 7;
        System.out.println(w > 2 & s >3);
        System.out.println(!(w > 2));
        //System.out.println(w ^ s);
        System.out.println(w > 2 ^ s >3);

        //将w 和 s 的值互换

        w = w ^ s;
        s = w ^ s;
        w = w ^ s;
        System.out.println("w = "+ w +  "s  = " + s );

        /**
         * 短路&&  短路||  结果和& | 相同。
         * 不同:&& 运算中,运算符左边如果为假,右边不执行。  一假则假
         *      || 运算中,运算符左边如果为真,右边不执行。   一真则真。
         */
    }
三元
    /**
     * 三元运算:   布尔表达式 ? 结果1 : 结果2
     */
    public static void main(String[] args) {
        double score = 59.999;
        System.out.println(score >= 60 ? "通关":"不及格");
        System.out.println(score < 60 ? "不及格":"通关");
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值