标识符 关键字 字面值 数据类型 进制换算 字符编码 变量 数据类型详解 运算符

1、标识符

 

/*
	关于java语言当中的标识符

	1、 什么是标识符?
		- 在java源程序当中凡是自己有权利命名的单词都为标识符。
		- 标识符在Editplus当中以黑色高亮显示
		- 标识符可以表示什么元素呢?
			*类名
			*方法名
			*变量名
			*常量名
			*接口名
			...

	2、标识符的命名规则?【不按照这个规则来 编译器会报错 这是语法】
	* 只能由 数字、字母、下划线_、美元符号$ 组成,不能含有其他符号
	* 不能以数字开头
	* 严格区分大小写
	* 关键字不能做标识符
	* 理论上无长度限制 但是最好不要过长

	3、标识符的命名规范?【只是一种规范,不属于语法,不遵守编译器不会报错】
		* 最好见名知意
		public class UserService{
			public void (String username,String Password) {
			}
		}
		* 遵守驼峰命名方法
		SystemService
		UserService
		* 类名、接口名: 首字母大写,后面每个单词首字母大写
		* 变量名、方法名:首字母小写,后面每个单词首字母大写
		* 常量名:全部大写

*/

public class IdentifireTest01	//IdentifierTest01 是一个类名,名字可以修改
	// main 是一个方法名
{	public static void main(String[] args){ //args 是一个变量名
	
}
}

2、字面值

/*
	关于字面值:
		
		* 字面值:
			-10、100	属于整数型字面值
			-3.14		属于浮点型字面值
			-"abc"		" 中国人" 输入字符串型字面值
			-'a'		'人'属于字符型字面值
			-true、false		属于布尔型字面值

		* 字面值就是数据。
		注意:
		java语言中所有字符串型字面值必须用双引号括起来
		java语言中所有字符型字面值必须用单引号括起来

*/

public class ConstTest01
{
	public static void main(String[] args){
		System.out.println(10);
		System.out.println(3.14);
		System.out.println("中国人");
		System.out.println('人');
		// System.out.println('中国'); 报错:编译报错,因为单引号中只能存放单个字符
	}

}


		

3、变量

/* 
	变量
	变量本质上来说是内存中的一块空间,这块空间有 数据类型、变量名、字面值【数据】组成。

*/

public class VarTest01{ 
	public static void main(String[] args){
		int i=10;
		System.out.println(i);
		
			
		//int a,b,c=300;	报错:a和b尚未初始化(赋值) c赋值300
		//System.out.println(a);
		//System.out.println(b);
		//System.out.println(c);
	}
}
/* 
	
*/

public class VarTest01{ 
	public static void main(String[] args){
		int i=100;
		i=80;
		System.out.println(i);
		// 报错: 在同一个作用域当中,变量名不能重名(因为i=100已经占用了内存空间了)但是变量可以重新赋值。
		//int i =90;
		//System.out.println(i);
	}
}

4、变量的作用域(成员变量 局部变量)

/* 
	什么是变量的作用域?
		* 出了大括号就不认识了
	
*/

public class VarTest01{ 
	// 注意这里的static不能省掉
	static int k=90;	//相当于全局变量    (成员变量)
	public static void main(String[] args){
		// 变量i的作用域是main方法
		// 在整个main方法中是有效的可见的
		int i=100;	// 相当于局部变量 只能在main方法中应用 在dosome方法中不能用 
		
		System.out.println(k);   //可以访问k

		// 以下会编写一个for循环语句
		//for (int a=0;a<10 ;a++ )	// a变量的作用域是整个for循环 for循环结束后a变量内存就被释放了
		//{
		//}
		//System.out.println(a);	// 报错!!! 无法访问a变量
		int j; // 相当于全局变量
		for (j=0;j<10 ;j++ )
		{
		}
		System.out.println(j);
	}
	public static void dosome(String[] args){
		//报错!!!
		// 这里已经无法访问main方法中的i变量
		//System.out.println(i);
		System.out.println(k);   //可以访问k
	}

} 

 5、数据类型              

/*

	数据类型的作用?
		程序当中有很多数据,每一个数据都有相关的类型,不同数据类型占用的空间大小不同
		数据类型的作用是指导JVM在运行过程中给该数据分配相应的内存空间
    
	基本数据类型:(包括四大类八小种)

	整数型: 
	int		4字节			
	long	8			
	short	2			
	byte	1			取值范围【-128~127】
	浮点型: 
	float	4
	double	8
	布尔型: 
	boolean 1			取值范围【true,false】
	字符型: (表示文字)
	char	2			取值范围【0~65535】


	
	字符串"abc"不属于基本数据类型,属于引用数据类型,字符属于基本数据类型
		*字符串用双引号""
		*字符用单引号''

什么是字节编码?

	为了让计算机能够表示现实世界当中的文字,我们需要人为的干涉,需要人负责提前制定好"文字"
	和"二进制"之间的对照关系,这种对照关系被称为: 字符编码。
	最早的字符编码:ASCII码
	'a'--->97
	'A'--->65
	'0'--->48

java语言采用的是哪一种编码方式呢?
	-java语言源代码采用的是unicode编码方式,所以"标识符"可以是中文。
	public class 学生{
	}
	现在在实际开发中,一般使用UTF-8编码方式比较多。【统一编码方式】
 */

 数据类型的详细介绍:

        char类型

public class DataTypeTest
{	
	public static void main(String[] args){
	
	char a='a';
	System.out.println(a);


	// 定义一个中文字符一个中文占用2个字节 char刚好2个字节
	// 当为2个中文时就会报错
	char b='国';
	System.out.println(b);

	//ab为字符串不能用单引号   报错!!!
	//char c='ab';
	//System.out.println(c);
	
	//为双引号时也会报错类型类型不兼容
	//char d="a";
	//System.out.println(d);
	}
	
}

       转义字符 

/*	
	关于java语言中的char的类型:
		转义字符   \
		
		\n	换行符
		\t	制表符
		\'	普通的单引号
		\\	普通的反斜杠
		\"	普通的双引号

		转义字符出现在特殊字符之前,会将特殊字符转换成普通字符
		如:System.out.println("\"hello world!\"");	  \会将左右两边的引号转换成普通"

*/

public class DataTypeTest
{
	public static void main(String[] args){
		// * 普通的字符n
		char a='n';
		System.out.println(a);
		
		// * \n 换行符
		System.out.println("hello");
		System.out.println("world!");
		
		// 注意: print和println的区别: print指输出后不换行 println指输出后换行
		System.out.print("hello");
		System.out.println("world!");

		// 编译错误 报错
		//System.out.println(""hello world!"");
		System.out.println("\"hello world!\"");
		
		//  * \t 制表符(相当于tab)
		// 强调:制表符和空格不同,他们的ASCII码不同
		char i='\t';
		System.out.print("A");
		System.out.print(i);
		System.out.println("B");

		// * 要求在控制台输出反斜杠字符
		//char c='\';	报错 反斜杠将后面的'进行转义了 而要是用c变量的话需要完整的''因此报错
		//System.out.println(c);
		char c='\\';	// 第一个反斜杠将后面的斜杠进行转义成\
		System.out.println(c);

		 
	}
}

关于JDK自带的native2ascii.exe命令,可以将文字转换成unicode编码形式如下:

 怎么解码呢?

整数型

    关于java语言当中的整数型:
    数据类型    占用空间大小    默认值    取值范围    
    ----------------------------------------------------------
    bytes            1            0            【-128~127】
    short            2            0            【-32768~32767】
    int                4            0            【-2147483648~2147483647】
    long            8            0L
    
1、 java语言当中的“整数型字面值”被默认当做int类型来处理,要想让这个“整数型字面值”被当做long类型
来处理的话,需要在“整数型字面值”后面加上l或L,建议使用L。
(如 long x=123;    123先被JVM当做整数型字面值来进行判断取值范围等,然后赋值给long型)

2、java语言当中的整数型字面值有三种表示方式:
    第一种方式:十进制【是一种缺省默认的方式】
    第二种方式:八进制【在编写八进制整数型字面值的时候需要以0开始】
    第三种方式:十六进制【在编写十六进制整数型字面值的时候需要以0x开始】

public class DataTypeTest
{
    public static void main(String[] args){
        int a=10;
        int b=010;
        int c=0x10;
        System.out.println(a);    //10
        System.out.println(b);    //8
        System.out.println(c);    //16
        
        //由上述1文字叙述可知 123这个整数的字面值为int类型
        //i变量声明的时候也是int类型
        //int类型的123赋值给int类型的变量i,因此不存在类型转换
        int i=123;
        System.out.println(i);
        
        // 错误: 过大的整数: 2147483648 
        // 因为2147483648首先被JVM当成int类型 但是int类型的取值范围为2147483647因此进行了报错
        //long z=2147483648;
        //System.out.println(z);

        // 将字面值变成long型(long型的取值范围大)
        long z=2147483648L;
        System.out.println(z);


    }
}

强制转换类型: 


强制类型转换原理: 加上强制类型转换符“(转换类型)”后编译能通过 但运行阶段可能损失精度。
        原始数据(如:long类型):
        00000000   00000000   00000000  00000000   00000000   00000000  00000000   01010100   
        强转之后的数据(如强转成int类型):
        00000000   00000000  00000000   01010100
        long k=27564123L;
        int e=(int)k;
        System.out.println(e);

byte特殊性

public class DataTypeTest
{
    public static void main(String[] args){
        
        分析以下数据是否能够编译成功?
        依据目前所学以下数据编译是不成功的
        理由:50是int类型的字面值,a是byte类型的变量,显然是大容量int转换成小容量byte
        大容量转换成小容量需要添加强制类型转换符 以下程序没有添加转换符 所以报错
        注意: 但是程序没有报错 以下代码编译通过了 这说明:在java语言中,当一个整数型字面值
        没有超过byte类型的取值范围的话 该字面值可以直接赋值给byte类型的变量
        byte a=50;
        byte b=127;
        byte c=128;// 超出了byte类型的取值范围 报错
        
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        

    }
}

浮点型类型

/*
    关于浮点型类型:
    float 单精度【4个字节】
    double 双精度【8个字节】
    
    在java语言中,所有的浮点型字面值如【3.0】默认当成double类型来进行处理
    要想该字面值当做float类型来处理 需要在字面值后面加上F或f
    
    注意:double和float在计算机内部二进制存储的时候存储的都是近似值。
        如10÷3=3.333333333333...

*/
    
public class DataTypeTest
{
    public static void main(String[] args){
        
        // 字面值3.0默认类型为double类型 无转换
        double i=3.0;
        System.out.println(i);

        //字面值5.0默认为double类型 double类型比float类型大 因此大转小 报错
        //(没有添加强制转换符 添加的话也容易丢失精度)
        //float a =5.0;
        //System.out.println(a);

        float b =5.1F;
        System.out.println(b);
        

    }
}

布尔数据类型

/*
    关于布尔型数据类型:
    boolean

*/

public class DataTypeTest
{
    public static void main(String[] args){
        // java当中 0和1不兼容  报错
        //boolean i =1;

        boolean loginuser = true;
        if (loginuser)
        {
            System.out.println("恭喜你 登录成功!");
        }
        else{
            System.out.println("用户登录失败!");
        }

    }
}

基本数据类型的相互转换 

/*
    关于基本数据类型之间的转换:
        转换规则:
        1、八种基本数据类型当中除布尔型类型之外剩余的7种数据类型之间可以进行相互转换
        2、小容量向大容量转换称为自动类型转换,容量从小到大排序:
            byte<short<int<long<float<double<char
           注:
                   任何浮点型不管占用多少个字节 都比整数型容量大
                char和short可表示的种类数量相同,但是char可以取更大的正整数
        3、大容量转换为小容量称为强制类型转换,需要加强制类型转换符,程序才能
            编译通过,但是在运行阶段可能会损失精度,所以谨慎使用
        4、当整数字面值没有超过byte,short,char的取值范围,可以直接赋值给byte,short,char类型的变量
        5、byte,short,char混合运算的时候,各自先转换成int类型再做运算

         byte a=5;

         short b=10;

         int k =15;(尽量不要让运算法则混杂进来 尽量不写成 int x = a+b) 
        6、多种数据类型混合运算,先转换成容量最大的那种类型再做运算

*/

算术运算符 

/*
    关于java编程运算符中: 算术运算符
        
        +    求和
        -    相减
        *    乘积
        /    商
        %    求余数【取模】

        ++    自加1
        --    自减1

        注意:一个表达式当中有多个运算符,运算符有优先级,不确定的加小括号,优先级得到提升。
        没有必要去专门记忆运算符的优先级

*/


public class DataTypeTest
{
    public static void main(String[] args){
        int i =3;
        int a =6;
        System.out.println(i+a);
        
        // 以下为++为例 (--相同)
        // 关于++运算符【自加1】
        //int b =9;
        //++运算符可以出现在变量名之后【单目运算符】
        //b++;
        //System.out.println(b);    //10
        // ++运算符可以出现在变量名之前
        //++b;
        //System.out.println(b);    //10
        
        int c =100;
        int d =++c;
        System.out.println(c);    //101    ++c了所以100+1
        System.out.println(d);    //101    同理++c为101

        int e =300;
        int f =e++;
        System.out.println(e);    //301    e++了所以300+1
        System.out.println(f);    //300    int f =e++ 先赋值e 后作加减 所以先将e=300 赋值给f
    }
}

 关系运算符

/*
    关于java编程运算符中: 关系运算符

    !=    不等于

    关系运算符的运行结果一定是布尔类型:true/false
        
        
*/

public class DataTypeTest
{
    public static void main(String[] args){
        int a =10;
        int b =10;
        System.out.println(a!=b);    //false
    }
}

逻辑运算符

/*
    关于java编程运算符中: 逻辑运算符
    
    &    逻辑与【并且】(两边的算子都为true 结果才为true)
    |    逻辑或【或者】(两边的算子只要有一个为true 结果就为true)
    !    逻辑非(取反    !false就是true    !true就是false )
    ^    逻辑异或    (两边的算子只要不一样 结果就为true)
    
    &&            短路与
    ||            短路或

    短路与和逻辑与最终的运算结果是相同的,只不过短路与存在短路现象
    短路或和逻辑或最终的运算结果是相同的,只不过短路或存在短路现象

        
        
*/

public class DataTypeTest
{
    public static void main(String[] args){
        System.out.println(6>5&6>3);    //true 运算级:先算6>5  6>3 再比较
        System.out.println(6>5&6>8);    //false
        System.out.println(6>5|6>9);    //true
        System.out.println(6>8&6>10);    //false
        System.out.println(!false);        //true
        System.out.println(false^false);    //false
        System.out.println(false^true);        //true
        System.out.println("======================");
        // 逻辑与和短路与
        int x=10;
        int y =8;
        // 逻辑与
        System.out.println(x<y & ++x<y);
        System.out.println(x);    //11

        // 短路与
        //x<y结果是false,整个表达式结果已经确定是false
        // 所以后面的++x<y表达式不再进行,这种现象称为短路现象
        System.out.println(x<y && ++x<y);
        System.out.println(x);    //10

    }
}

从某个角度讲短路与更为智能。由于后面的表达式可能不执行,所以执行效率较高。

 字符串连接运算符

/* 字符串连接规则:
    
    数字 + 数字 ---> 数字【求和】
    数字 + "字符串" ---> "字符串"【字符串连接】

*/

public class A
{
    public static void main(String[] args){
        System.out.println(10+30);    //40
        System.out.println("10+30");    // 10+30
        System.out.println(10+"30");    //1030
        System.out.println(10+20+"30");    //3030 自左向右的顺序依次计算
        System.out.println(10+(20+"30"));//20+"30"变成字符串"2030" 然后字符串"2030"再与数字10相加 结果102030
        
        int a=10;
        int b=30;
        // 怎么输出10+30=40呢?
        // 第一种方法
        System.out.println("10+30=40");    //10+30=40
        // 第二种方法【要求动态方法 就是不固定变量a和b】
        System.out.println("10+30="+a+b);
        //"10+30=1030"    先拼接"10+30="+a (字符串+数字 直接拼接)即"10+30=10" 再"10+30=10"+b 即"10+30=1030"
        System.out.println("10+30="+(a+b));    //10+30=40
        System.out.println("a+30="+(a+b));    // a+30=40
        // 问: 怎么把a和b写活呢?
        System.out.println(a+"+"+b+"="+(a+b));//拼接过程:a+"+",a+"+"+b,a+"+"+b+"=",a+"+"+b+"="+(a+b)

        System.out.println("=============================");
        /*
        引用类型String
        String是SUN在javaSE当中提供的字符串类型
        String.class字节码文件

        String是引用数据类型,s是变量名,"abc"是String类型的字面值
        String s="abc";
        
        注意:String ss=10; 编译错误 类型不兼容
        */
        String username="junker";
        //System.out.println("登录成功 欢迎username回来!");//登录成功 欢迎username回来!
        System.out.println("登录成功 欢迎"+username+"回来!");//登录成功 欢迎junker回来!

    }
}

三元运算符

/*
    三元运算符/三目运算符/条件运算符

    1、语法规则:
        布尔表达式 ? 表达式1:表达式2
    
    2、三元运算符的执行原理:
        当布尔表达式的结果为true的时候,选择表达式1作为整个表达式的执行结果
        当布尔表达式的结果为false的时候,选择表达式2作为整个表达式的执行结果
*/

public class A
{
    public static void main(String[] args){
        // 布尔类型的变量
        boolean sex =true;
        //    报错 不是一个语句
        //sex ? '男':'女';

        //正确过程如下:
        char c = sex ? '男':'女';
        System.out.println(c);    // 男
        
        // 报错 不兼容类型: "男" 为String类型 '女' 为char类型
        //char d =sex ? "男":'女';
        //System.out.println(d);

        sex =false;    // 给boolean变量重新赋值
        // 也可以都写成String类型
        String i = sex ? "男":"女";
        System.out.println(i);    // 女


    }
}

运用三元运算符: 

接收用户输入的3个整数 并将它们的最大值作为结果输出

public class A
{
	public static void main(String[] args){
		java.util.Scanner s = new java.util.Scanner(System.in);
		System.out.print("请输入第一个整数:");
		int a =s.nextInt();
		System.out.print("请输入第二个整数:");
		int b =s.nextInt();
		System.out.print("请输入第三个整数:");
		int c =s.nextInt();

		int max =a>b?a:b;
		max =max>c?max:c;
		System.out.println("最大值为:"+max);
	}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值