zoukankan      html  css  js  c++  java
  • luogg_java学习_02_基本语法

    本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用.

    **转载请注明 出自 : luogg的博客园 ** 谢谢配合!

    关键字

    • 定义:被java语言赋予了特殊含义,用作专门用途的字符串。
    • 特点:关键字所有字母都小写。

    保留字

    • 现有java版本尚未使用,但以后版本会作为关键字使用.byValue,cast,future,inner,outer,var,goto,const

    标示符

    • java对各种变量方法和类等要素命名时使用的字符序列称为标示符。
    • 凡是自己可以起名字的地方都叫标示符

    java中名称命名规范

    • 包名:多单词组成时所有字母都小写:xxxyyyzzz
    • 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
    • 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
        int myInt = 1;
    
    • 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ

    变量

    • 数据类型 变量名 = 初始化值;
    • 变量的作用域:一对{}之间

    基本数据类型

    • 整型byte,short,int,long(L/l)
      byte 1字节(8byte), -128~127
      short 2字节,-215~215-1
      int 4字节,-231~231-1 , java1.7开始,加上前缀0b就可以写一个二进制数了,例如0b1001表示9
      long 8字节,-263~263-1
    • 浮点型float(F),double
      float 4字节
      double 8字节 **double/0 = Infinity(无穷)
    • 字符型char(只能表示一个字符,可以是英文中文标点,若要表示多个字符,用String)
        char c1='a';
        String str="abc";
    
    • 布尔型boolean

    • char类型还可以表示转义字符和unicode值

        char c1='
    ';
        char c2='	';
        char c3='u1234';
    

    基本数据类型转换

    • 自动类型转换:当容量小的数据和容量大的数据做运算时,容量小的数据会自动转换为容量大的数据。

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

    • 强制类型转换:容量大的转换为容量小的,要使用强制类型转换。
    long l1=12345L;
    int i1=(int)l1;
    

    强制类型转换的问题:导致精度损失。

    • [x] String类型的字符串与基本数据类型之间的运算:只能是连接运算 + 。得到的结果仍然是一个字符串。
    String str="abc";
    int i1=12345;
    String str2=str+i1;//abc12345;
    

    原码、反码、补码

    • 对于正数,原码反码补码三码合一。
    • 反码:原码各个位除符号位外取反。
    • 补码:反码+1。
    • 不管正数还是负数,在底层都是以补码的形式存储的。

    进制之间的转换

    • 十进制==>二进制:除2取余数的逆
    • 二进制>八进制:三个数当做一个数。
      11101001
      0351
    • 二进制==>十六进制:四个数当作一个数。

    算术运算符

    • +(正号),-(负号),+,-,*,/,%(取模),++,--,+(连接符)
    • i++:先运算,后自增加1。
    • ++i:先自增加1,后运算
        int i1=10;
    	int i2=i1++;
    	System.out.println(i1);//11
    	System.out.println(i2);//10
    		
    	int i3=10;
    	int i4=++i3;
    	System.out.println(i3);//11
    	System.out.println(i4);//11
    
    int i5=10;
    		int i6=i5--;
    		System.out.println(i5);//9
    		System.out.println(i6);//10
    		
    		int i7=10;
    		int i8=--i7;
    		System.out.println(i7);//9
    		System.out.println(i8);//9
    

    赋值运算符

    • +=,-=,*=,/=,%=
    short s=3;
    		s=(short)(s+3);//不建议如此实现
    
            s+=3;//既可以实现运算,又不会更改s的数据类型。
    
    • =为赋值符号。==为等号,判断左右是否相等。

    逻辑运算符

    • &逻辑与:不管左边是ture还是false右边都会进行运算。
    • &&短路与:当左边为false时右边不进行运算。(建议使用&&,)
    • |逻辑或:左端为true时,右端继续做运算。
    • ||短路或:左端为true时,右端不再做运算。(建议使用||)
    • !逻辑非
    • ^逻辑异或:左右两边取值不一样的时候才为1。

    深入理解逻辑与和短路与的区别

    boolean c=false;
    		int c1=10;
    		if(c&(c1++) >0){
    			System.out.println("今天是个好天气");
    		}else{
    			System.out.println("难得没有雾霾");//难得没有雾霾
    		}
    		System.out.println(c1);//11
    		
    		int c2=10;
    		if (c&&(c2++)>0) {
    			System.out.println("今天是个好天气");
    		}else{
    			System.out.println("难得没有雾霾");//难得没有雾霾
    		}
    		System.out.println(c2);//10
    

    位运算符

    • <<左移,左移几位,相当于成2的几次方
    • >> 右移,不足的用与最高位相同的数字补齐,0或1。
    • >>>:无符号右移,不足的都用0补全。
    • &:与运算,6&3=2;用2进制表示,上下相等用为1,否则为0。
    • |:或运算,6|3=7。用二进制表示,上下有一个为1,则为1。
    • ^:异或运算,6|3=5.用二进制表示,上下两边不一样时用1表示。
    • :反码。6=-7。用二进制表示,直接各位取反。

    交换两个元素的值

    int m=5;
    int n=10;

    方法一:提供一个临时变量
    		int temp;
    		temp=m;
    		m=n;
    		n=temp;
    
    方法二:当m和n较大时,有可能出现精度损失
    		m=m+n;
    		n=m-n;
    		m=m-n;
    
    方法三:优点:没有上面两种方法的缺点。 缺点:难,想不到。
    		m = m ^ n;
    		n = m ^ n;//(m^n)^n=m
    		m = m ^ n;//(m^n)^m
    
    练习:以手动的方式,从控制台输出60的2进制8进制16进制
    int i=60;
    		//将十进制的数转换为二进制
    		String binary=Integer.toBinaryString(i);
    		System.out.println(binary);//111100
    		//将十进制的数转换为八进制
    		String octal=Integer.toOctalString(i);
    		System.out.println(octal);//74
    		//将十进制的数转换为十六
    		String hex=Integer.toHexString(i);
    		System.out.println(hex);//3c
    
    三元运算符
    • 三元运算符:(条件表达式)?表达式1:表达式2;
    • 要求:表达式1与表达式2必须是同种数据类型。
    • 三元运算符可以转换为if-else,反之不成立。因为三元运算符必须有一个运算结果,而if-else不一定需要有运算结果。
    int i=10,j=20;
    		int max=(i>j)?i:j;
    		System.out.println(max);//20
    		
    		String str=(i>j)?"i大":"j大";
    		System.out.println(str);//j大
    		
    int i1=10,j1=10;
    		String str1=(i1>j1)?"i1大":(i1==j1)?"相等":"j1大";
    		System.out.println(str1);//相等
    		
    		
    //用三元运算符输出三个数中的最大值
    		int a=5,b=100,c=20;
    		int max1=(a>b)?a:(b>c)?b:c;
    		System.out.println(max1);//100
    
  • 相关阅读:
    jQuery cookie记住用户名密码自动登录
    MySQL解决8小时内没有进行数据库操作, mysql自动断开连接, 需要重启tomcat的问题
    JavaWeb项目设置Session失效时长,失效后自动跳转页面
    JS通过id获取表格内容,并循环添加到数据库
    JS实现表格Table动态添加删除行
    使用easyUI框架实现select下拉框动态加载option
    MySQL数据库出现Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ...this is incompatible with sql_mode=only_full_group_by的问题
    JS获取系统当前时间
    同一机器不同数据库间关联查询
    Fiddler各模块使用说明
  • 原文地址:https://www.cnblogs.com/luogg/p/5658366.html
Copyright © 2011-2022 走看看