一.标识符
二.关键字
三.JAVA基础数据类型
3.1. java常量
3.2. java变量
从本质上来讲,变量其实是内存里面的一小块区域,一个程序在运行的时候,实际上这个程序是位于内存里面,然后才开始运行。一个.exe文件存放在硬盘上是无法运行的,在硬盘上看到的.exe文件无非就是一个文件而已,当我们双击这个.exe文件时,运行起来的时候实际上是整个.exe文件被放在了在内存里面,然后操作系统找到main方法,也就是程序的入口,然后就开始执行了。执行的过程之中,会不断地在内存里面分配一些区域,变量在内存里面就是一小块区域,变量有两个概念,一个是变量的名字,另一个是变量的值,即这一小块区域是有名字的,里面装着一个值,因此以后要想访问这小块区域里面的内容就可以根据这小块区域的名字来访问了。因此,变量的本质就是一小块内存区域。就变量来说,该在内存里面分配多大的存储空间呢?不同的变量类型分配不同大小的存储空间,每一个变量都是属于特定的数据类型的,声明成不同的数据类型,它就在内存里面分配不同的存储空间。
变量作用域:变量的作用域只在“{ }”有效,出了这个“{ }”就没有作用了
3.3. java变量的分类
3.4. java局部变量与成员变量
3.5. java数据类型划分
四. java数据类型讲解
4.1.boolean——布尔型
4.2.char——字符型
全球的文字放到计算机里面表示全是0和1,Unicode是统一了全世界国家文字的一种编码方式,用这样的编码可以把全世界国家的文字连接在一起。Unicode编码又分为两种,一种是Utf-8,另一种是Utf-16。JAVA所采用的是Utf-16,每一个字符占2个字节,任何国家的文字放到Unicode里面都是占2个字节。
4.3.整数类型
C语言编译好的程序为什么不能移植,如把.exe文件放到Linux下是执行不了的,一个很大很大的原因在于C语言定义的变量在不同的操作系统上所占的大小是不一样的,声明一个int类型的变量,在Windows下面占32位,但放到Linux下面就有可能只占16位,那么这时候很可能表示的大小就不一样了,在Windows下声明一个很大的数,在Linux下面很可能就会溢出。因此这就是C语言为什么在编译完成之后不能移植的原因。
4.4.浮点类型
4.5.基本数据类型的转换
类型转换测试
public class TestConvert { public static void main(String arg[]) { int i1 = 123; int i2 = 456; double d1 = (i1+i2)*1.2; //系统将转换为double型运算 float f1 = (float)((i1+i2)*1.2); //需要加强制转换符 byte b1 = 67; byte b2 = 89; //byte与int混合运算,系统会默认将byte转成int后,再进行计算 byte b3 = (byte)(b1+b2); //系统将转换为int型运算,需要强制转换 System.out.println(b3); double d2 = 1e200; float f2 = (float)d2; //会产生溢出 System.out.println(f2); float f3 = 1.23f; //必须加f (float可以精确到小数点后7位,对于小数,java默认为double,若想指定其为float,则需加后缀F或f 以示区别)。 long l1 = 123; long l2 = 30000000000L; //必须加l (同理对于整数,java默认为int,所以若想指定其为long,需加后缀L或l 以示区别) float f = l1+l2+f3; //系统将转换为float型计算 long l = (long)f; //强制转换会舍去小数部分(不是四舍五入) } }
五.运算符
5.1.算术运算符(自加和自减运算符)
package com.jkqiang.demo; public class Test { /** * 注意(++ --) * 在前时,先运算,再取值 * 在后时,先取值,再运算 */ public static void main(String[] args) { int i, i1=10, i2=20; i=(i2++); //先取值赋值,然后再进行自增运算 System.out.println("i="+i+"\t i2="+i2); //输出:i=20 i2=21 i=(++i2); //先自增运算,然后再取值,进行赋值操作 System.out.println("i="+i+"\t i2="+i2); //输出:i=22 i2=22 i=(i1--); System.out.println("i="+i+"\t i1="+i1); //输出:i=10 i1=9 i=(--i1); System.out.println("i="+i+"\t i1="+i1); //输出:i=8 i1=8 } }
5.2.逻辑运算符
public class Test { /** * 逻辑与(&) 同真(true) 则 真 (true) * 逻辑或(|) 同假(flase) 则 假 (false) */ public static void main(String[] args) { System.out.println(true & false); //结果为false System.out.println(false & true); //结果为false System.out.println(false & false); //结果为false System.out.println(true & true); //结果为true <<-- //【逻辑与】只有当符号两边的表达式都为true时结果才为true System.out.println(true | false); //结果为true System.out.println(false | true); //结果为true System.out.println(true | true); //结果为true System.out.println(false | false); //结果为false <<-- //【逻辑或】只有当符号两边的表达式都为false时结果才为false } }
public class Test { /** * 短路与 if(a==1&&b==2) 这是说既要满足a=1也要满足b=2 结果才是true * 如果a==1第一个条件都不满足,那么就直接返回false,不会再去判断b是否满足条件 * 所以这样看来,好像b条件判断,被短路掉了一样 * * 短路与 和 逻辑与的区别就是,逻辑与必须条件1与条件2都比较后才能得出结果,不存在短路问题 */ public static void main(String[] args) { int a=3, b=2; if(a==1&&b==2){ System.out.println("ok"); }else{ System.out.println("not ok"); } //输出: not ok } }
所谓短路与,即在第一项为false的情况下,不再进行第二项的判断
所谓短路或,即在第一项为true的情况下, 不再进行第二项的判断
5.3.赋值运算符
5.4.字符串连接符
5.5.表达式
5.6.三目运算符