Java_基础语法

Java基本语法(上):变量与运算符

关键字与保留字

关键字(keyword)的定义和特点

  • 定义:被Java语言赋予特殊含义,用作专门用途的字符串(单词)
  • 特点:关键字中所有字母都为小写
  • 官方地址:
    保留字
  • Java保留字:比如goto、const

标识符(Identifier)

  • 标识符
    - Java对各种变量方法等要素命名时使用的字符序列称为标识符。
    - 技巧:凡是自己可以起名字的地方都叫标识符
  • 定义合法标识符规则
    - 由26个英文字母大小写,0-9 ,_或$ 组成
    - 数字不可以开头
    - 不可以使用关键字和保留字,但能包含关键字和保留字
    - Java中严格区分大小写,长度无限制
    - 标识符不能包含空格
  • Java中的名称命名规范
    - **包名:**多单词组成时所有字母都小写:xxxyyyzzz
    - **类名、接口名:**多单词组成时,所有单词的首字母大写:XxxYyyZzz
    - **变量名、方法名:**多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
    - **常量名:**所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
    - 注意1:在起名字时,为了提高阅读性,要尽量有意义,“见名知意”。
    - 注意2:java采用unicode字符集,因此标识符也可以使用汉字声明,但是不建议使用。

代码整洁之道笔记
整理人:尚硅谷 - 宋红康老师

第2章 有意义的命名
2.1 介绍 软件中随处可见命名。我们给变量、函数、参数、类和包命名。我们给源代码及源代码所在目录命名。 这么多命名要做,不妨做好它。下文列出了取个好名字的几条简单规则。

2.2 名副其实,见名知意
变量名太随意,haha、list1、ok、theList 这些都没啥意义

2.3 避免误导
包含List、import、java等类名、关键字或特殊字;
字母o与数字0,字母l与数字1等
提防使用不同之处较小的名称。比如:XYZControllerForEfficientHandlingOfStrings与XYZControllerForEfficientStorageOfStrings

2.4 做有意义的区分
反面教材,变量名:a1、a2、a3
避免冗余,不要出现Variable、表字段中避免出现table、字符串避免出现nameString,直接name就行,知道是字符串类型
再比如:定义了两个类:Customer类和CustomerObject类,如何区分?
定义了三个方法:getActiveAccount()、getActiveAccounts()、getActiveAccountInfo(),如何区分?

2.5 使用读得出来的名称
不要使用自己拼凑出来的单词,比如:xsxm(学生姓名);genymdhms(生成日期,年、月、日、时、分、秒)
所谓的驼峰命名法,尽量使用完整的单词

2.6 使用可搜索的名称
一些常量,最好不直接使用数字,而指定一个变量名,这个变量名可以便于搜索到.
比如:找MAX_CLASSES_PER_STUDENT很容易,但想找数字7就麻烦了。

2.7 避免使用编码
2.7.1 匈牙利语标记法
即变量名表明该变量数据类型的小写字母开始。例如,szCmdLine的前缀sz表示“以零结束的字符串”。
2.7.2 成员前缀
避免使用前缀,但是Android中一个比较好的喜欢用m表示私有等,个人感觉比较好
2.7.3 接口和实现
作者不喜欢把接口使用I来开头,实现也希望只是在后面添加Imp

2.8 避免思维映射
比如传统上惯用单字母名称做循环计数器。所以就不要给一些非计数器的变量命名为:i、j、k等

2.9 类名
类名与对象名应该是名词与名词短语。如Customer、WikiPage、Account和AddressParser。避免使用Data或Info这样的类名。
不能使动词。比如:Manage、Process

2.10 方法名
方法名应当是动词或者动词短语。如postPayment、deletePage或save

2.11 别扮可爱
有的变量名叫haha、banana
别用eatMyShorts()表示abort()

2.12 每个概念对应一个词
项目中同时出现controllers与managers,为什么不统一使用其中一种?
对于那些会用到你代码的程序员,一以贯之的命名法简直就是天降福音。

2.13 别用双关语
有时可能使用add并不合适,比例insert、append。add表示完整的新添加的含义。

2.14 使用解决方案领域名称
看代码的都是程序员,所以尽量用那些计算机科学术语、算法名、模式名、数学术语,
依据问题所涉领域来命名不算是聪明的做法。

2.15 使用源自所涉问题领域的名称
如果不能用程序员熟悉的术语来给手头的工作命名,就采用从所涉问题领域而来的名称吧。
至少,负责维护代码的程序员就能去请教领域专家了。

2.16 添加有意义的语境
可以把相关的变量放到一个类中,使用这个类来表明语境。

2.17 不要添加没用的语境
名字中带有项目的缩写,这样完全没有必要。比如有一个名为“加油站豪华版”(Gas Station Deluxe)的项目,
在其中给每个类添加GSD前缀就不是什么好策略。

2.18 最后的话
取好名字最难的地方在于需要良好的描述技巧和共有文化背景。

	- 详细可以参考[提取码:suyi](https://pan.baidu.com/s/1ppgT950YT4YUKd3x6fZNFg%29)

变量

  • 变量的概念
    - 内存中的一个存储区域
    - 该区域的数据可以在同一类型范围内不断变化
    - 变量是程序中最基本的存储单元。包含变量类型、变量名和存储的值
  • 变量的作用
    - 用于在内存中保存数据
  • 使用变量注意
    - Java中每个变量必须先声明,后使用
    - 使用变量名来访问这块区域的数据
    - 变量的作用域:其定义所在的一对{ }内
    - 变量只有在其作用域内才有效
    - 同一个作用域内,不能定义重名的变量
  • 声明变量
    - 语法:<数据类型> <变量名称>
  • 变量的赋值
    - 语法:<变量名称> = <值>
  • 声明和赋值变量
    - <数据类型><变量名>= <初始化值>
  • 变量的分类-按数据类型划分

很久之前做的笔记,顺利稍微有点乱

package world;
/*
 * 标识符的使用
 * 1.标识符:凡是自己可以命名的地方都叫标识符
 * 		比如:类名、变量名、方法名、接口名、包名
 * 
 * 2.标识符的命名规则: --> 如果不遵守以下规则,编译不通过!
 * 	 由26个英文字母大小写,0—9,_或$组成
 * 	 数字不可以开头
 * 	 不可以使用关键字和保留字,但能包含关键字和保留字
 * 	Java中严格区分大小写,长度无限制
 * 	标识符不能包含空格
 * 
 * 3.Java的名称命名规范--> 如果不遵守以下规则,编译通过!
 * Java中的名称命名规范:
 * 包名:多单词组成时所有字母都小写:xxxyyyzzz
 * 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
 * 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
 * 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
 * 
 * 4.
 * 注意1:在起名字时,为了提高阅读性,要尽量有意义,“见名知意”。
 * 	   注意2:java采用unicode字符集,因此标识符也可以使用汉字声明,但是不建议使用。
 */
public class IdentifierTest {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int myNumber = 10;
		System.out.println(myNumber);
	}
	
}

class Hello_${
	
}

//class 1hello{
//}
class static1 {
}
class Static{
	
}



package world;
/*
 * 变量的使用
 * 1.Java定义变量的格式:数据类型	变量名  = 变量值;
 * 
 * 2.说明:
 * 	变量必须先声明,后使用
 * 	变量都定义在其作用域内,在作用域内,它是有效的。换句话说,出了作用域,就失效了
 * 	同一个作用域,不能同时声明两个同名的变量
 */
public class VariableTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
//		变量的定义
		int myAge = 20;
//		变量的使用
		System.out.println(myAge);

//		编译错误:使用myNumber之前并未定义myNumber
//		System.out.println(myNumber);
		
		
//		不可以在同一个作用域内定义同名的变量
//		int myAge = 19;
		
//		变量的声明
		int myNumber;

//		编译错误:使用myNumber之前并未赋值myNumber
//		System.out.println(myNumber);

		
//		变量的赋值
		myNumber = 20200;
		System.out.println(myNumber);
		
//		System.out.println(method);
		
	}
	public void method() {
		int myClass = 1;
	}

}

package world;
/*
 * 基本数据类型之间的运算规则
 * 	前提:这里只讨论7种基本数据类型变量间的运算。不包含Boolean类型的。
 * 
 * 1.自动类型提升:
 * 	结论:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型
 * 	byte、char、short ==> int ==> long ==> float ==> double
 * 特别:当byte、char、short三种类型的变量做运算时,结果为int型
 * 
 * 
 * 2.强制类型转换
 * 
 * 
 * 说明:此时的容器大小指的是,表示数的范围的大和小,比如float容量要大于long的容量
 */

public class VariableTest2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		byte b1 = 2;
		int i1 = 12;
		//编译不通过
		//byte b2 = b1 + i1;
		int i2 = b1 + i1;
		long l1 = b1 + i1;
		System.out.println(i2);
		System.out.println(l1);
		
		float f = b1 + i1;
		System.out.println(f);
		
		short s1 =12;
		double d1 = s1;
		System.out.println(d1);

		//****************************************
		char c1 = 'a';
		int i3 = 1;
		int i4 = i3 + c1;
		System.out.println(i4);
		
		short s2 =10;
//		short s3 = c1 + s2;
	}

}

package world;
/*
 * 强制类型转换,可能导致精度损失
 */

public class VariableTest3 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		double d1 = 12.3;
		//案例1
		int i1 = (int)d1; //截断操作
		System.out.println(i1);
		
		//没有损失精度
		long l1 = 123;
		short s2 = (short)d1;
		
		//案例2
		int i2 = 128;
		byte b = (byte)i2;
		System.out.println(b);
	}

}

package world;

public class Variable4 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//1.编码情况
		long l = 123123;
		System.out.println(l);
		//编译失败:过大的整数
		// long l1 = 12345678987654321;
		
		// 编译失败
//		float f1 = 12.3;
		
	  //2.编译情况
		//整型变量,默认类型int型
		//浮点型变量,默认类型为double型
		byte b = 12;
		//byte b1 = b + 1;//编译失败
		//float f1 = b + 12.3; //编译失败
		
		
	}

}

package world;
/*
 * 计算机中不同进制的不同说明
 * 所有数字在计算机底层都以二进制形式存在。
 * 
 * 对于整数,有四种表示方式:
 * 	二进制(binary):0,1 ,满2进1.以0b或0B开头。
 * 	十进制(decimal):0-9 ,满10进1。
 * 	八进制(octal):0-7 ,满8进1. 以数字0开头表示。
 * 	十六进制(hex):0-9及A-F,满16进1. 以0x或0X开头表示。此处的A-F不区分大小写。
 * 		如:0x21AF +1= 0X21B0
 */
public class BinaryTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int num1 = 0b110;
		int num2 = 110;
		int num3 = 0127;
		int num4 = 0x110A;
		System.out.println("num1 = " + num1);
		System.out.println("num2 = " + num2);
		System.out.println("num3 = " + num3);
		System.out.println("num4 = " + num4);

	}

}

package world;

public class yanghui {

	
		
			public static void main(String[] args) {
				
				int[][] arr=new int[10][10];
				for(int i=0;i<arr.length; i++) {
					
					for(int j=0;j<=i;j++) {
				
						if(j==0||j==i) {
							arr[i][j]=1;
						}else {
							arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
						}
						
						System.out.print(arr[i][j]+"\t");
					}
					System.out.println();
				}
			}
		
	

}

  • 了解:ASCII码
    - 在计算机内部,所有数据都使用二进制表示。每一个二进制位(bit)有0 和1 两种状态,因此8 个二进制位就可以组合出256 种状态,这被称为一个字节(byte)。一个字节一共可以用来表示256 种不同的状态,每一个状态对应一个符号,就是256 个符号,从0000000 到11111111。
    - ASCII码:上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为ASCII码。ASCII码一共规定了128个字符的编码,比如空格“SPACE”是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的1位统一规定为0。
    - 缺点:不能表示所有字符。;相同的编码表示的字符不一样:比如,130在法语编码中代表了é,在希伯来语编码中却代表(ג)了字母Gimel
  • 了解:Unicode编码
    - 乱码:世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。因此,要想打开一个文本文件,就必须知道它的编码方式,否则用错误的编码方式解读,就会出现乱码。
    - Unicode:一种编码,将世界上所有的符号都纳入其中。每一个符号都给予一个独一无二的编码,使用Unicode 没有乱码的问题。
    - Unicode 的缺点:Unicode 只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储:无法区别Unicode 和ASCII:计算机无法区分三个字节表示一个符号还是分别表示三个符号。另外,我们知道,英文字母只用一个字节表示就够了,如果unicode统一规定,每个符号用三个或四个字节表示,那么每个英文字母前都必然有二到三个字节是0,这对于存储空间来说是极大的浪费。
  • 了解:UTF-8
    - UTF-8 是在互联网上使用最广的一种Unicode 的实现方式。
    - UTF-8 是一种变长的编码方式。它可以使用1-6 个字节表示一个符号,根据不同的符号而变化字节长度。
    - UTF-8的编码规则:对于单字节的UTF-8编码,该字节的最高位为0,其余7位用来对字符进行编码(等同于ASCII码);对于多字节的UTF-8编码,如果编码包含n 个字节,那么第一个字节的前n 位为1,第一个字节的第n+1 位为0,该字节的剩余各位用来对字符进行编码。在第一个字节之后的所有的字节,都是最高两位为"10",其余6位用来对字符进行编码。

练习题

标识符的命名规则需要注意那几点?

  • 1.定义合法标识符规则
  • 由26个英文字母大小写,0-9 ,_或$ 组成
  • 数字不可以开头
  • 不可以使用关键字和保留字,但能包含关键字和保留字
  • Java中严格区分大小写,长度无限制
  • 标识符不能包含空格
  • 2.Java中名称命名规范
  • 包名:多单词组成时所有字母都小写:xxxyyyzzz
  • 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
  • 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
  • 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
    基本数据类型有哪几类?包含String吗?

写出基本数据类型自动转化的流程图

整型默认的是什么类型,浮点型(实数型)默认的是什么类型?
对于包名,类名接口名,变量名和函数名,常量名我们习惯如何格式来命名?
定义一个变量需要注意什么?
强制类型转化可能出现的问题
char型变量中能不能存贮一个中文汉字?为什么?
注明:这些笔记主要根据B站学习视频所写,非自己撰写哈。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值