概述:
Java语法基础知识:数据类型、变量、标识符、关键字、运算符、注释
1.数据类型:
1.java是强类型语言,所有变量都必须声明其确定的类型
2.基本数据类型和引用数据类型 见图
3.类型转换:
1.自动转换(由小转大)
2.强制类型转换(可能会造成数据精度的丢失甚至是异常)
2.变量
1.存储数据的基本单元,用来存储程序执行过程中需要的或生成的数据
2.作用范围(生命周期):局部变量和成员变量 (涉及到java面向对象知识)
3.标识符:
1.对各种变量、方法、类等命名的字符串序列(符号)
2.规则
a.组成:字母、数字、_(下划线)、$(美元符号),不能有特殊符号(空格、@、#)和关键字(在java中有特殊意义的字符串序列)
b.必须以字母、_(下划线)、$(美元符号)开头
c.大小写敏感
4.关键字:在java中有特殊意义的,注意都是小写 见图
5.运算符
1.见图
2.几个需要注意的运算符:++、--、&&、||、三元运算符、扩展运算符的含义,这些都见例子
3.优先级顺序
6.注释
1.单行注释、多行注释
2.注释的好处:
1.记录开发思路,方便自己回忆、他人理解
2.ide下开发,对方法注释,会让其他调用者清楚的看到方法及每个参数的含义
3.javadoc:将注释提炼成系统文档(甚至可以省去编写开发文档的大部分工作)
package com.cxy.base;
import java.util.List;
/**
* @author cxy
*/
public class Base1Test
{
public static void main(String[] args)
{
//unicode字符集97号编码是小写字母a
char u1=97;
System.out.println(u1);
//a字符和b字符在unicode字符集编码相差1
char u2='a';
char u3='b';
System.out.println(u3-u2);
//想知道你的名字在unicode字符集的位置么?
char name1='程';
char name2='序';
char name3='员';
System.out.println("程的unicode,10进制编码为:"+(name1-name2+name2));
System.out.println("序的unicode,10进制编码为:"+(name2-name1+name1));
System.out.println("员的unicode,10进制编码为:"+(name3-name1+name1));
// 类型转换
// 自动类型转换 和 强制类型转换
int aaa = 100;
long bbb = 100L;
long ccc = aaa + bbb; //aaa 自动转成long型做运算
int ddd = aaa +(int)bbb; //强制转换成int型 可能会造成精度的缺失
//这里其实我们可以写一个工具类,用来探测变量的真实类型,但是由于涉及到面向对象的知识,所以请期待后期文章
//System.out.println(TypeTools.getType(aaa + bbb));
//System.out.println(TypeTools.getType((int)bbb));
/* int和integer区别
* 1.int是基本的数据类型
* 2.Integer是int的封装类 属于引用类型,提供了int数据的相关操作
* 3.当需要往ArrayList,HashMap中放东西时,像int,double这种内建类型是放不进去的,因为容器都是装 object的
* 这里涉及到:集合、封装类等知识,请关注我博客的相关文章
*/
int eee=1;
Integer fff=new Integer(1);
/* 自增运算符 (注意这只是做个演示,真实工作的时候千万不要写这么“高深”的代码)
* 两种自增的含义:
* a=b++; b先做自加操作,然后将b的原始值赋给a
* a=++b; b先做自加操作,然后将b的自加后的值赋给a
* 这里注意 执行的顺序都是b先做自加!因为++的优先级比=(复制运算符)高很多~
* 看了很多书,只有一本叫做《java核心技术》的书阐述的是这样的执行过程
* 如果下面的例子 你能分析成功 那么你++运算符的使用算是过关了
*/
int zzz=100;
System.out.println("zzz=100,经过如下运算后");
System.out.println("zzz++ + ++zzz 结果是:" + (zzz++ + ++zzz));
System.out.println("++zzz + zzz++ 结果是:" + (++zzz + zzz++));
System.out.println("zzz最终结果是:" + zzz);
/* &&(短路与)、||(短路或)
* 什么叫做短路与?
* a && b:当a为假的时候无论b是真是假,这个表达式都为假,所以这种情况java根本不会去理会b到底是个什么样的结果
* 这样做 能够提高程序执行效率
* || 道理相同,当第一个表达式是真的话,第二个表达式无所谓真假
*
* 下面的例子涉及到集合和异常的知识,请参见本博客的相关文章
*/
List l=null;
if(l!=null && l.size()>1)
{
//你的操作
}
/*说明:了解异常知识的人知道,l的值是null,当调用l的方法时,会报null异常
*但是我们发现这里根本没有报异常,因为l==null为false后java并不去关心(执行)后面的表达式(因为这根本没有意义)
*/
//三元操作符演示
int i=100;
System.out.println(i==100?"满分":"非满分");
//解释:i是不是等于100?是的话表达式的值就是"满分",否则的话就是"非满分"
//等价于下面(下面涉及到java控制流相关知识,请参见本博客的相关文章)
if(i==100)
{
System.out.println("满分");
}else
{
System.out.println("非满分");
}
}
}
声明:
1.原创文章,转载请标明并加本文连接。
2.文章反映个人愚见,如有异议欢迎讨论指正