今天的课程内容还是很满的,下面就是今天的课程目录!
基本概念常量变量运算符1、在代码中,用于解释说明的部分
2、注释的特点: (1).在编译期会忽略注释部分的语法检测 (2).在运行期不会被执行
3、分类: (1).单行注释:一次只能注释一行内容,只能在一行起效 ①.使用符号:【// 被注释的内容】 ②.特点:单行注释可以嵌套使用 ③.快捷键:ctrl + / (2).多行注释:一次可以注释一行或者多行内容,可以在1~n行起效 ①.使用符号:【/* 被注释的内容 /】 ②.特点:多行注释不能嵌套使用 ③.快捷键:添加多行注释:ctrl + shift + / 取消多行注释:ctrl + shift + (3).文档注释:使用符号【/* 被注释的部分 */】面向对象期间学习
4、注释的作用: (1)对代码进行解释说明 (2)对代码的思路进行描述
代码示例:
public class Demo01 { public static void main(String[] args) { //单行注释 //System.out.println("HelloWorld!"); //多行注释 /*System.out.println("一骑红尘妃子笑"); System.out.println("玄宗问:爱妃荔枝好吃否"); System.out.println("美的很");*/ //文档注释 /** System.out.println("邹忌问客曰:吾与城北徐公孰美"); System.out.println("客曰"); System.out.println("忌你太美"); */ } } 关键字1、关键字:在Java中被赋予了特定功能或者特殊含义的单词
2、图示:
3、特点: (1) 关键字都是纯小写 (2) 自己在代码中起名字的时候,不要使用关键字 (3) 保留字:goto、const,在当前版本没有赋予特殊含义,但是不代表以后不会去使用
标识符1、标识符:给代码起的名字,对类、接口、变量、常量、枚举等起的名字
2、组成: (1) 英文字母:a-z A-Z (2) 数字:0-9 (3) 下划线:_ (4) 美元符号:$ (5) 所有语言的合法符号(在开发中不允许)
3、注意事项: (1) 数字不能开头 (2) 虽然其他语言的合法文字符号语法也允许,但是在实际应用中不允许使用 (3) 不能和关键字重名
4、快捷键: (1) 向上添加一个空行:ctrl + shift + enter (2) 向下添加一个空行:ctrl + enter (3) 光标移至行首:home (4) 光标移至行尾:end (5) 倒着删除:delete
代码示例:
public class Demo02_Name { public static void main(String[] args) { //定义一个变量 int num = 10; int a12 = 11; int a_12$ = 12; //错误示例:数字不能开头 //int 12ab = 33; } } Java的命名规则1、约定俗称的规则,不遵守从语法的角度讲不会有任何问题,但是行有行规
2、规则:见名知意 (1) 包:全部小写,域名倒置:com.offcn.demos (2) 类名和接口名:大驼峰原则 规则:一个单词首字母大写,其余小写;多个单词每个单词首字母大写,其余小写 例如:Demo,RandomNumberTest (3) 方法名称:小驼峰原则 规则:一个单词纯小写,多个单词,从第二个单词起,每个单词首字母大写,其余小写 例如:get、getName、getMaxValue (4) 变量名:和方法名完全一样 (5) 常量名: 规则:一个单词纯大写,多个单词,每个单词纯大写,之间用下划线隔开 例如:MAX、MAX_VALUE、PI
1、常量:在程序的运行过程中,值不会发生改变的量
2、按照常量的表示形式分类: (1) 字面值常量:写出常量就知道表示的数值具体是多少:12,3.14 (2) 符号常量:某些常量,我们知道他具体是什么但是又说不出来,就用一个符号来代替
3、常量按照数据类型分类: (1) 基本数据类型:简单的数据 整数类型常量:所有整数:1,-5 小数类型常量:所有效数:3.14,-8.99 字符类型常量:使用单引号包围起来的单个字符:’a’,’ ’,’中’ 布尔类型常量:用于判断对错的数据类型,只有两个值:true、false (2) 引用数据类型:由多种简单的数据组成的一个复杂的数据 字符串常量:使用双引号包围起来的一串字符序列 空常量:null,表示空,表示不指向任何数据
代码示例:
public class Demo03_NormalVariable { public static void main(String[] args) { System.out.println(10); System.out.println(10.5); System.out.println('a'); System.out.println(' '); System.out.println(' '); //注意:java中,''中必须有内容,有且仅有一个内容 } }1、变量:运行过程中,值会发生改变的量
2、定义格式: 数据类型 变量名称 = 变量值;
3、使用变量的原因: (1) 在程序的运行中,有一些数据一直在变化,但是这些数据的意义相同,例如年龄。我们对于这些一直在变化但是意义相同的数据,使用统一的名称来表示 (2) 在内存中,变量实际上就是一块内存空间,空间里的数据在变,空间不变,变量名称指代的就是内存空间
图示:
代码示例:
public class Demo04_Variable { public static void main(String[] args) { //数据类型 变量名称 = 变量值; //int 表示一切的整数 //= 表示赋值,将符号右侧的值赋值给符号左侧的变量名称 int age = 13; System.out.println(age); age = 20; System.out.println(age); } } 数据类型1、Java语言是强类型语言,在使用数据之前,必须说明数据到底占用多大的内存空间,所以通过数据类型,以表示占用的内存大小。
2、数据类型的分类: (1) 基本数据类型:在JDK中已经定义好的数据类型,官方也明确的规定了这些数据类型所占用的内存大小,并且这些数据类型的大小无法改变,描述的都是一些简单的数据。这些数据类型描述的就是数据【本身】 (2) 引用数据类型:描述的不是数据本身,而是数据存储的【地址】。一般这些数据都是由基本数据类型的数据组合而成,形成的数据是复杂的数据。
3、基本数据类型:四类八种 (1) 整数类型 byte 1字节(8条电路,8bit) -128~127 short(短整型) 2字节 -2^15 ~ 2^15-1 int 4字节 -2^31 ~ 2^31-1 long(长整型) 8字节 -263~263-1 (2) 浮点类型(IEEE754标准) float(单精度型) 4字节 > long的8个字节 double(双精度型) 8字节 (3) 字符类型 char 2字节 0~65535 (4) 布尔类型 boolean 未知
代码示例:
public class Demo05_VariableType { public static void main(String[] args) { //数据类型 变量名称 = 变量值; //整数类型 //byte num1 = 128;//不能从int转向byte //System.out.println(num1); //short num2 = 100; //System.out.println(num2); //int num3 = 2147483648;//-2147483648~2147483647 //System.out.println(num3); //long num4 = 2147483648;//int数据超出了范围 //System.out.println(num4); /* * 浮点类型 * float:能表示最多8为小数,但是有效位数是7位 * double:能表示最多16为小数,但是有效位数是15位 * * */ /*double dou = 3.14; System.out.println(dou);*/ //float f = 3.1;//不能从double转向float //double dou = 10 / 3; //double num1 = 3.3; //double num2 = 3; //System.out.println(num1 - num2); /* * 字符类型 char * */ char c = 'a'; char c1 = ' '; char c2 = ' '; char c3 = '*'; //char c4 = ''; //char c4 = 'aa'; /* * 布尔类型 boolean * */ boolean bo = true; boolean bo1 = false; } } 常量的默认类型1、整数类型的常量默认值为int类型,随意书写任何一个整数都会被当成int类型,如果书写的数字超出了int类型的范围,就会报错,此时如果需要使用long类型保存该数字,就需要在数字后面加上【L】,表示这个数字不是默认的int,而是long类型
2、浮点类型的常量默认值为double类型,随意书写任何一个小数都是double类型,如果需要像float变量中赋值,必须在小数后面加上一个【F】,告诉编译器,这是一个float数据,而不是double
代码示例:
public class Demo06_DefaultType { public static void main(String[] args) { //在Java中,所有整数类型常量的默认类型是int //byte b = 128;//128默认是int类型,判断超出了byte范围,所以会报错:不能从int转向byte //System.out.println(128); /* * java默认所有整数常量都是int,但此时这个数字超出了int范围, * 如果我们需要编译通过,在数据后面加上L,告诉编译器,把这个数字当作long类型对待 * */ //long l = 2147483648L; /* * java默认所有浮点类型常量都是double,但此时这个数字要存储进float * 因为double比float大,装不进去,此时就需要在数字后面加上【F】, * 告诉编译器,不要把这个数字当作double类型,而是一个float * */ float f = 3.14F; } } 变量定义的注意事项1、变量的定义(声明):带有数据类型的部分
2、变量的使用(访问):没有数据类型只有变量名称
3、变量是具有作用域的: (1) 作用域:起作用的范围 (2) 范围:变量定义在哪一对大括号里,就只在哪一对大括号中起效
4、在同一个作用域中,不能出现重名的变量
5、在方法中,变量必须先赋值后使用
6、变量的定义和赋值可以拆分开
7、在同一行中声明定义多个变量:
代码示例:
public class Demo07_Warning { public static void main(String[] args) { /*int a = 1; int b = 2; int c = 3; int d = 4;*/ //int a = 1, b = 2, c = 3, d = 4; int a, b, c, d; a = 1; b = 2; c = 3; d = 4; /*int num = 10;//变量的定义 { int num1 = 123; System.out.println(num1); num = 20;//变量的使用 } System.out.println(num);//变量的使用 int number; //System.out.println(number); number = 10; System.out.println(number);*/ } } 隐式类型转换1、当一个小范围的数据和一个大范围的数据做运算的时候,会先将小范围的数据提升称为较大范围的数据,之后再做运算,得到的结果也是较大范围的数据
2、基本数据类型的范围排序 byte < short = char < int < long < float < double
3、注意事项: byte、short、char、int之间的任意两个数据类型做运算时,都会直接提升称为int类型,再进行计算,只有int及其较大的数据进行计算时,才会进一步提升称为那个较大的数据
代码示例:
public class Demo08_UpType { public static void main(String[] args) { /*int num = 5; double dou = num; System.out.println(dou);*/ /*double dou = 10.0; int num = 3;*/ /* * 当一个小范围的数据和一个大范围的数据做运算的时候 * 会先将小范围的数据提升称为较大范围的数据 * 之后再做运算,得到的结果也是较大范围的数据 * */ //System.out.println(dou - num); short num1 = 3; byte num2 = 5; //short s = num1 + num2; } } 强制类型转换(大转小)1、大范围的数据要存储进小范围的变量中,由于担心存在精度损失,所以不能赋值,我们可以通过强制类型转换,将大范围的数据赋值给小范围的变量
2、格式: (要转成的数据类型)需要转换的数据类型
3、注意事项: 强制类型转换不一定会损失数据的精度
代码示例:
public class Demo09_LowType { public static void main(String[] args) { //(要转成的数据类型)需要转换的数据类型 byte b = (byte)128; System.out.println(b); int num = 10; byte b1 = (byte)num; System.out.println(b1); } } 常量优化机制1、定义:给一个变量赋值,如果等号的右边是常量并且没有任何一个变量,那么就会再编译阶段计算常量的值,之后判断常量的值是否符合表达式左侧数据类型的取值范围,如果符合就直接赋值,如果不符合就会报错
2、注意事项:赋值符号右侧的表达式,只要出现了任何一个变量,常量优化机制就不会再起效了
代码示例:
public class Demo10 { public static void main(String[] args) { byte b1 = 127; byte b3 = 120 + 5; int num = 127; byte b2 = (byte)num; byte b7 = 3; byte b8 = (byte)(b7 + 3); byte b4 = 120; byte b5 = 5; byte b6 = (byte)(b4 + b5); } } 字符类型1、使用单引号包围起来的单个字符,就是字符类型。使用数据类型char来表示
2、在计算机中,所有的符号都是以数字的形式来表示的,字符也不例外
3、看到的字符,在计算机中都有对应的数字,有一个转换关系: (1) 【编码】从字符到机器语言的过程 (2) 【解码】机器语言到字符的过程
4、字符集:表示字符到数字的一一对应关系的内容,就是字符集,别名【编码表】
5、ASCII码表:
6、规律:数字字符和数字字符之间是连续的;大写字母和大写字母之间连续,小写字母和小写字母之间连续。我们需要记忆:’0’对应48,’A’对应65,’a’对应97
7、各个国家都有自己的语言符号,所以各个国家也都拥有自己的字符集。中国的字符集:GB2312,GBK,前128为就是ASCII表
8、因为各个国家都有自己的字符集,不方便统一,为了统一就诞生了Unicode码,0-65535个字符,包含了世界各国的语言。Java语言在计算机内存中,默认就是Unicode码。
9、utf-8万国码,使用1-4个自己来表示不同语言的字符,其中英文占1个字节,中文占3个字节;GBK英文占1个字节,中文占2个字节。
10、char类型能够表示字符,而字符和码值又能一一对应,所以,char类型赋值既可以书写字符,也可以书写字符的码值
11、因为Java语言在内存中的字符集默认是Unicode码,所以char类型还能书写Unicode码。Unicode书写格式:\uxxxx,\u就是Unicode码的开头书写的形式,xxxx表示4个16进制的数字
代码示例:
public class Demo11_Char { public static void main(String[] args) { char c = 'a';//97 System.out.println(c); char c1 = 65; System.out.println(c1); char c2 = '\u4e2d'; System.out.println(c2); } } 字符串类型1、使用双引号包围起来的一串字符,就是字符串常量。
2、Java中提供了一个类型来表示字符串:String
3、字符串和其他类型拼接:使用【+】
4、任何一个数据类型与字符串拼接,都会得到一个全新的字符串,结果是拼接后的结果
5、任何数据类型想要转换为字符串的表示形式,就和空串进行拼接
代码示例:
public class Demo12_String { public static void main(String[] args) { String str = "abcdefg"; String str1 = "";//空串 System.out.println(str1); System.out.println(str); int num = 123; //任何数据类型的数值和字符串做加法都是字符串的拼接:结果依然是一个字符串 System.out.println(str + num); System.out.println(num + 1); //int类型的数字123转为字符出串的表示形式:"123"只需要和空串进行拼接即可 System.out.println(num + "" + 1);//123 + "" -> "123" + 1 -> "1231" } }1、用于进行数学运算的符号
2、+ - * / %
3、+: (1) 表示正数 (2) 用于进行字符串拼接 (3) 用于进行加法运算
4、/:java中的整数除法,会自动舍掉小数部分,只保留整数部分
5、%:取余(取模)——取余数:取余的结果正负只看第一个参数的符号,第一个参数为正就是正,反则反之
代码示例:
public class Demo13_Math { public static void main(String[] args) { System.out.println(10 % 3); System.out.println(10 % -3); System.out.println(-10 % -3); System.out.println(-10 % 3); /*int a = 10; int b = 3; System.out.println(a % b);*/ /*double c = 10.0; double d = 3.0; System.out.println(c / d); //java中的整数除法,会自动舍掉小数部分,只保留整数部分 System.out.println(a / b); System.out.println(a / d);*/ } } 自增自减运算符1、++、–
2、作用:在某个变量原有的基础上+1或者-1
3、表达式和语句: (1) 表达式:不带分号 (2) 语句:带分号
4、注意事项: (1) 作为语句的时候,自增自减在前在后没有任何差别 (2) 作为表达式时,自增自减在后,先做其他事儿,再自增自减;自增自减在前,先自增自减,在做其他事儿
代码示例:
public class Demo14_AddSelf { public static void main(String[] args) { int num = 10; //语句 //num++; //++num; System.out.println(++num); //System.out.println(num); } } 赋值运算符1、用于给变量进行赋值的运算符
2、分类: (1) 基本赋值运算符:= (2) 扩展赋值运算符:+=、-=、*=、/=、%=
3、扩展赋值运算符:先用符号左侧的变量对符号右侧的数据进行算数运算,之后将结果重新赋值给符号左侧的变量
代码示例:
public class Demo15_Give { public static void main(String[] args) { //先用符号左侧的变量对符号右侧的数据进行算数运算,之后将结果重新赋值给符号左侧的变量 int num = 10; //num *= 2;//num = num * 2; num /= 3;//num = num / 3; System.out.println(num); } } 比较运算符1、组成: 等于:== 不等于:!= 、 > 、< 、 >= 、<= 2、所有的比较运算符结果都是布尔类型:true、false
代码示例:
public class Demo16_Compare { public static void main(String[] args) { System.out.println(3 == 3); System.out.println(5 >= 10); System.out.println(3 != 5); } } 逻辑运算符1、用于处理代码中逻辑的部分,运算符的参数都是布尔类型
2、要处理的数据:布尔类型,处理后的结果:布尔类型
3、&:逻辑与:一假即假,全真为真 true & true true true & false false false & true false false & false false
4、|:逻辑或:一真即真,全假为假 true | true true true | false true false | true true false | false false
5、!:非:遇真为假,遇假为真 !false true !true false
6、&&:短路与
7、||:短路或
8、短路与短路或和逻辑与逻辑或的区别:不论条件判断结果如何,逻辑与和逻辑或会将所有的条件都执行;短路与和短路或如果第一个条件执行完毕就能得到最终结论,就不会再去执行第二个条件。
代码示例:
public class Demo17_AndNegateOr { public static void main(String[] args) { int num = 10; int num1 = 25; System.out.println(num < num1 && num1 / num > 0); System.out.println(num > num1 || num1 / num > 0); } } 位移运算符1、用于对数据进行位移操作的运算符
2、数据在计算机中用二进制存储,如果对数值类型的数据进行计算,效率比较低,如果进行位移运算,是直接对数字进行数位的移动操作的,效率要比传统的计算要高
3、符号:<< 、 >> 、>>>
4、左移:<<,一个数字每次左移一位,就在原有的基础上乘2
5、右移:>>,一个数字每次右移一位,就在原有的基础上乘1/2
6、无符号右移:>>>,一个数字每次右移一位,就在原有的基础上乘1/2,只允许操作正数,不允许操作负数
代码示例:
public class Demo18_Move { public static void main(String[] args) { int num = -4; //System.out.println(num << 2); //System.out.println(num >> 1); //System.out.println(num >>> 1); } }