自学Java基础知识第二天

Day02笔记

课程内容

1、基本概念

2、常量

3、变量

4、运算符

一、基本概念

(一)注释

1、在代码中,用于解释说明程序的部分。

2、注释特点:

 1)编译器不会检查这部分内容的语法格式

 2)运行的时候会忽略掉这部分内容

3、分类:

 单行注释:使用符号【//】,可以注释本行的内容,是//后面的内容

 特点:可以嵌套使用

 快捷键:ctrl + / 添加(取消)单行注释

多行注释:使用符号【/* */】,可以注释多行的内容,两个星号中间的内容

 特点:可以换行注释、不能嵌套

 快捷键:ctrl + shift + / 添加多行注释

   ctrl + shift + 取消多行注释

文档注释:在面向对象阶段学习

快捷键:alt + shift + J 添加文档注释

注意:光标在类中方法之外的位置,是给类添加文档注释的

3、注释的作用:

 1)对程序进行解释说明:要求代码中,有30%行数都是用来写注释的

 2)对程序的思路进行描述

 3)对程序进行调试:通过注释的方式,快速定位出现错误的代码位置

代码示例

package com.offcn.demos;

/**
 *
 */
public class Demo01_LineComment {

/**
* 
*/
public static void main(String[] args) {
System.out.println("abc");
//System.out.println("123");
//System.out.println("456");
System.out.println("qwe");

/*/*System.out.println("HelloWorld");
System.out.println("HelloWorld");*/
System.out.println("HelloWorld");
//System.out.println("HelloWorld");//向控制台输出打印HelloWorld
}

 

(二)关键字

1、在java语言中,被赋予了特殊含义,特殊功能的英文单词

2、图示:

 

 

3、特点:

 1)全部小写

 2)自己起名字的时候,不要和关键字重名

 3)有两个保留字:goto、const,在当前版本不使用,但是以后是否使用未知。

(三)标识符

1、标识符:用于给类、接口、方法、变量、常量、枚举起名字的字符序列

2、组成:

 1)英文大小写a-zA-Z

 2)数字0-9

 3)特殊符号$ _

 4)不常用符号:除了英文以外的其他语言的字符

3、标识符的注意事项:

 1)不要和关键字重名,mychar合法、char非法

 2)数字不要开头,abc123合法、123abc非法、123非法

4、关于光标的快捷键:

光标向下一行:shift + enter

光标向上一行:ctrl + shift + enter

光标移到行首:home键

光标移到行尾:end键

按照完整的模块移动光标:ctrl + ←(→)

倒序删除:delete键

代码示例

package com.offcn.demos;

public class Demo02_name {

public static void main(String[] args) {
//int 表示一个整数,我们在后面学到,此处不用纠结
int num = 10;
int a = 10;
int number1_$ = 111;
int number1_$数字 = 111;
int $abc = 123;
int _abc = 123;
//int 1_abc = 123;
//int class = 123;
}

 

(四)Java的命名规则

1、约定俗成的规则,编译器不会检查,但是在开发中必须要遵守的规则。

2、规则:见名知意

 包:全部小写,域名倒着写

 例如:com.ujiuye.demos

 类和接口:每个单词的首字母大写,其余其母都小写,一般是一个名词

 例如:HelloWorld

 方法:第一个单词的首字母小写,从第二个单词开始,首字母大写,其余字母全小写

 一般是一个动词或者动宾结构

 例如:eat、getMax、getName、getSum

 变量:第一个单词的首字母小写,从第二个单词开始,首字母大写,其余字母全小写

 一般是一个名词或者形容词

 例如:name、myAge

 常量:所有字母都大写,单词和单词之间,使用_分隔,一般是一个名词

 例如:PI、E、MAXVALUE、SECONDSPER_MINITE

二、常量

1、常量:在程序运行过程中,其值不会发生改变的量,就是常量

2、常量按照表示形式的分类:

 字面值常量:写出常量就可以知道常量的值,12, 12.34

 符号常量:给常量起了一个名字,看到名字就知道常量的意义,不知道常量的值

3、常量按照数据类型分类:

 基本数据类型:简单的数据

整数常量:所有整数,例如-12、15

小数常量:所有的小数,例如-12.34,100.0

字符常量:使用单引号引起来的符号,例如’a’、’1’

布尔常量:用于表示是是非非的内容,true、false

 引用数据类型:基本类型组装而成的一些数据类型

字符串常量:使用双引号引起来的字符序列,例如”HelloWorld”

 空常量:表示空,不指向任何数据,null

代码示例

package com.offcn.demos;

public class Demo03_Constant {

public static void main(String[] args) {
System.out.println(10);//整数字面值常量
System.out.println(3.5);//小数字面值常量
System.out.println('');
System.out.println(' ');
System.out.println('z');
System.out.println(' ');
System.out.println('1');//字符常量需要使用''包围起来,且''中间有且仅有一个字符

System.out.println(true);
System.out.println(false);
System.out.println("abc123defg!");
//System.out.println(null);
}

 

三、变量

(一)变量的定义

1、变量:在程序运行过程中,其值会发生改变的量。

2、定义格式:

 数据类型 变量名 = 变量值;

3、使用变量的原因:

 在程序中,有一些代表相同意义的数据,在不断发生变化,例如年龄

 定义一个不变的变量名称,表示那些不断变化的数字

 在内存中,其实就是一段内存空间,空间中的数据可以不断的变化

4、图示:

 

 

代码示例

package com.offcn.demos;

public class Demo04_Variable {

public static void main(String[] args) {
//int 表示整数类型的变量
//定义格式:数据类型  变量名称  = 变量值;
int age = 18;

System.out.println(age);

age = 28;

System.out.println(age);
}

 

(二)数据类型

1、java是一个强类型语言:需要显式的说明内存空间的大小,声明变量的时候,就需要说明变量的数据类型,以此来表示内存的大小。

2、数据类型的分类:

 基本数据类型:在jdk中已经定义好的一些类型,这些类型无法增加,描述的都是一些简单的数据。这些数据描述的是数值【本身】。

 引用数据类型:数据描述的不是数据本身,而是在描述真正数据的【地址】。一般都是使用一些自定义的类去描述,相当于各种基本类型的组合,形成一个复杂的类型。

3、基本数据类型:四类八种

 整数类型

 byte 1个字节(8条电路,8个位,8bit) -128~127

 short 2个字节 -2^15~2^15-1

 int 4个字节 -2^31~2^31-1

 long 8个字节 -2^63~2^63-1

 小数类型:IEEE754标准

 float 4个字节 >8个字节long类型

 double 8个字节 >4个字节的float类型

字符类型:

 char  2个字节   0-65535

布尔类型:

 boolean  未知 truefalse

代码示例

package com.offcn.demos;

public class Demo05_BasicVariable {

public static void main(String[] args) {
/*
* byte
* short
* int
* long
*
* float
* double
*
* char
*
* boolean
*
* */

//byte num1 = 128;
//System.out.println(num1);

short num2 = 6666;
System.out.println(num2);

//int num3 = 2147483648;
//System.out.println(num3);

/*long num4 = 2147483648;
System.out.println(num4);*/

double num5 = 3.14;
System.out.println(num5);

//float num6 = 3.1;

/*
* 在同一个方法中定义变量的时候,
* 变量不允许重名
*
* */
char ch1 = ' ';
char ch2 = 'n';
char ch3 = '';
//char ch3 = '';

System.out.println(ch3);

boolean bo1 = true;
boolean bo2 = false;

System.out.println(bo1);
System.out.println(bo2);

}

 

(三)常量的默认值

1、java中整数类型的默认值是int类型。例如,随意定义一个整数的字面值常量,这个数据默认为int类型。但是,当有些字面值常量大于int的取值范围时,编译器会报错,说数据超出int范围,我们此时需要在数据的后面加上l(L),告诉编译器,这个数是一个long类型的数据,不是int类型

2、java默认的小数类型是double类型,double类型比float大,随意定义一个小数的字面值常量,都会被当做double类型,如果此时将默认的double类型数据存储到空间更小的float类型中,会有精度损失,此时,我们需要在数据后面加上f或者F,表示这个数字就是一个float类型的数据。

代码示例

package com.offcn.demos;

public class Demo06_DefaultType {

public static void main(String[] args) {
//int 2147483647
//int num1 = 2147483648;

/*
* java中整数类型的默认值是int类型
* 例如,随意定义一个整数的字面值常量,这个数据默认为int类型
* 但是,当有些字面值常量大于int的取值范围时,编译器会报错,说数据超出int范围,
* 我们此时需要在数据的后面加上lL),告诉编译器,这个数是一个long类型的数据,不是int类型
* */
long num1 = 2147483648L;
//System.out.println(2147483648);

/*
* java默认的小数类型是double类型
* double类型比float大,随意定义一个小数的字面值常量,
* 都会被当做double类型,如果此时将默认的double类型数据存储到空间更小的float类型中,
* 会有精度损失
* 此时,我们需要在数据后面加上f或者F,表示这个数字就是一个float类型的数据
* */
float num3 = 3.1F;
}

 

(四)变量定义的注意事项

1、变量的作用域

 作用域:变量能够起作用的范围

 范围:变量定义在哪一对大括号内,就在哪一对大括号内起效

 变量的定义:变量的声明,带有数据类型的部分,就属于定义变量

 变量的访问:只有变量名称,没有数据类型

2、在同一个范围内,不允许出现重名的变量

3、在方法中,变量必须先赋值,后使用

4、变量的声明定义,和变量的赋值可以分开

5、可以在一行定义多个变量,格式:

数据类型 变量名称1 = 变量值1, 变量名称2 = 变量值2, 变量名称3 = 变量值3,..., 变量名称n = 变量值n;

不建议这样书写

代码示例

package com.offcn.demos;

public class Demo07_VariableNotice {

public static void main(String[] args) {

/*int a = 10;
int b = 20;
int c = 30;*/

//int a = 10, b = 20, c = 30;

/*int a, b, c;

a = 10;
b = 20;
c = 30;*/

//int num = 10;
/*int num;

num = 10;

System.out.println(num);*/

/*int num = 11;

System.out.println(num);*/

/*//1.变量的作用域
int num = 10;
//int num = 999;
{
int a = 111;
System.out.println(a);

num = 666;
System.out.println(num);//666
}

//System.out.println(a);
System.out.println(num);//666*/
}


 

(五)数据类型转换之隐式转换

1、当数据类型较小的数据存储进数据类型较大的数据时,会先将数据类型较小的数据,提升为数据类型较大的数据,再存储到数据类型较大的变量中。多个数据类型进行计算的时候,会先将较小的类型提升为较大的类型,之后再进行运算,最后存储。

2、数据类型大小的排序:

byte < short = char < int < long < float < double

3、注意事项:

byte 、short 、char、int计算的时候,会直接将数据类型提升为int,再去计算,而非较大的数据类型

int类型以及以上,在互相运算时,才会提升为较大的数据类型

代码示例

package com.offcn.demos;

public class Demo08_up {

public static void main(String[] args) {
/*int num = 3;

//隐式类型提升,隐式转换
double dou = num;

System.out.println(dou);*/


/*int num1 = 3;
byte num2 = 4;

//先将byte提升为intintint相加,得到int结果,再提升为double,存储进double
double dou = num1 + num2;*/

byte num1 = 4;
short num2 = 5;

//错误示范:先将byte提升为shortshortshort相加,得到short结果,再提升为int,存储进int
//正确示范:先将byteshort分别直接提升为int,再进行运算得到int,最终把int结果存储到int变量中
int result = num1 + num2;
}

 

(六)数据类型转换之强制转换

1、大范围的数据类型的数据,要转成小范围数据类型的数据,就需要进行强制转换

2、转换格式:

(要转成的数据类型)待转换的数据类型

3、注意事项:

强制转换可能会产生数据精度损失,也可能不会产生

代码示例

package com.offcn.demos;

public class Demo09_Down {

public static void main(String[] args) {
int num = 129;

//(要转成的数据类型)待转换的数据类型
byte b = (byte)num;

System.out.println(b);
}

 

(七)常量优化机制

当运算时,运算的数据都是常量时,会在编译的时候直接计算结果, 将结果和所要赋值的变量的数据类型取值范围进行比较,如果在范围内,就直接赋值,如果不在范围内,就报错。如果运行变量,常量优化机制就不会起作用

代码示例

package com.offcn.demos;

public class Demo10 {

public static void main(String[] args) {

/*
* 常量优化机制
* 当运算时,运算的数据都是常量时,会在编译的时候直接计算结果,
* 将结果和所要赋值的变量的数据类型取值范围进行比较,如果在范围内,就直接赋值,
* 如果不在范围内,就报错
*
* 如果运行变量,常量优化机制就不会起作用
* */

byte b1 = 1;
byte b = 10 + 20;
System.out.println(b);

/*byte b = 127 + 1;
System.out.println(b);*/

/*byte b1 = 10;
byte b2 = 20;
byte result = b1 + b2;
System.out.println(result);*/
}

 

(八)字符类型

1、使用单引号引起来的单个字符。使用关键字char来进行声明。

2、在计算机中,所有的数据都是用数字进行表示的,字符也不例外。

3、具体的字符,存储在计算机中需要使用数字表示,数字和字符之间就存在一一对应的关系:

 【编码】:将人类语言转为机器的语言

 【解码】:将机器语言转为人类的语言

 其中,表示人类语言和机器语言一一对应关系的表,叫做编码表

4、ASCII码表

 

 

 规律:数字本身连续,从0开始,对应的值是48

 大写字母本身连续,从A开始,对应的值是65

 小写字母本身连续,从a开始,对应的值是97

5、世界上各个国家都有自己的编码表(字符集),就出现了统一世界各国的字符集,叫做utf-8,也叫作万国码。

6、UTF-8万国码,兼容世界各国语言,其中中文占3个字节!中国的字符集,GB2312,GBK,在GBK中中文占2个字节!

7、Java语言默认Unicode码,Unicode码使用 ‘uxxxx’ 表示,其中xxxx是四位16进制的数据

代码示例

package com.offcn.demos;

public class Demo11_Char {

public static void main(String[] args) {
char ch = 'u5475';
System.out.println(ch);

char ch1 = 97;
System.out.println(ch1);

System.out.println((char)100);
}

 

(九)字符串类型

1、使用双引号引起来的一些列的字符的组合,是一个引用数据类型,字符串的变量空间中记录的是地址值。

2、声明字符串数据类型需要使用:String

3、任何数据类型与字符串类型进行加号运算,都会做字符串的拼接操作,例如:10 + "abc"得到"10abc"

 因此,数字类型转为String(字符串)类型,只需要和空字符串进行拼接操作即可

代码示例

package com.offcn.demos;

public class Demo12_String {

public static void main(String[] args) {
//System.out.println("HelloWorld!");

/*String str = "HelloWorld!";
System.out.println(str);*/

String str = "";//空串,一个字符也没有的字符串

//"abcqwe"
String str1 = "abc";
String str2 = "qwe";

String result = str1 + str2;
System.out.println(result);

//将一切基本数据类型转换为String字符串的方式:和空串进行拼接

int num1 = 10;
int num2 = 20;
System.out.println(num1 + num2);

//任何数据类型与String进行加号运算,都会得到一个新的拼接之后的字符串
String s1 = num1 + "";//10 -> "10"
System.out.println(s1 + num2);
}

 

四、运算符

(一)算数运算符

1、用于进行数学运算的符号

2、+ - * / %

3、+:加法运算符

 1)计算数学加法

 2)字符串拼接

 3)表示正数

4、/:除法运算符

 1)如果是两个整数相除,结果依然是一个整数,会直接省略小数点后的部分

 2)当参与运算的数据中有一个是小数,结果都是小数

5、%:取余(取模)运算符

 1)取余运算中,结果的符号只与第一个参数的符号有关

 2)例如:判断一个数字是否为偶数,当某个数字对2取余为0,即能够整除2,结果就是偶数,否则是奇数

代码示例

package com.offcn.demos;

public class Demo13_Math {

public static void main(String[] args) {
/*System.out.println(10 + 20);

System.out.println(10 / 2);
System.out.println(10 / 4);

System.out.println(10.0 / 3);
System.out.println(10 / 4.0);*/

System.out.println(10 % 3);
System.out.println(-10 % 3);
System.out.println(10 % -3);
System.out.println(-10 % -3);
}

 

(二)自增自减运算符

1、++自增、--自减

2、作用:让变量自身,自增或者自减1

3、运算规律:

 1)自增自减在变量的前面还是后面,作为语句的时候结果没有任何差别

 2)作为表达式的时候,当自增自减在后,先做其他事儿,再进行自增自减; 当自增自减在前,先自增自减再做其他事儿

代码示例

package com.offcn.demos;

public class Demo14_addMySelf {

public static void main(String[] args) {
/*
* 语句:结束的时候以分号结尾
* 表达式:没有分号结尾
*
* 1.自增自减在变量的前面还是后面,作为语句的时候结果没有任何差别
* 2.作为表达式的时候,当自增自减在后,先做其他事儿,再进行自增自减
*   当自增自减在前,先自增自减再做其他事儿
* */
int num = 10;

//num++;
//++num;

//--num;
//num--;

//System.out.println(num--);
System.out.println(--num);

/*System.out.println(num++);

System.out.println(num);*/
//System.out.println(++num);
}

 

(三)赋值运算符

1、用于给变量名赋值的运算符

2、分类:

 1)基本赋值运算符:=

 2)扩展赋值运算符:+=、-=、*=、/=、%=

3、基本赋值运算符:将符号右侧的值,赋给左侧的变量名称

4、扩展运算符:

 将符号左右两侧的数据先进行算术运算,之后再做赋值运算

代码示例

package com.offcn.demos;

public class Demo15_assignment {

public static void main(String[] args) {
int num = 10;

//num += 5;
//num -= 3;//num = num - 3;
//num *= 2;//num = num * 2;
//num /= 3;//num = num / 3;
num %= 2;//num = num % 2;

/*
*
* num += 5;
*
* num = num + 5;
*
* 1.获取符号右侧的num值为10
* 2.105相加得到15
* 3.将得到的15重新赋值回num中,将num原有的10改为15
*
* */
System.out.println(num);


}

 

(四)比较运算符

1、用于比较两个数值是否相等,比较结果是一个布尔类型的值

2、分类:

 ==:等于

 !=:不等于

 >:大于

 <:小于

 >=:大于等于

 <=:小于等于

3、注意:运算结果一定是布尔类型!即true或者false

代码示例

package com.offcn.demos;

public class Demo16_compare {

public static void main(String[] args) {
int num1 = 10;
int num2 = 10;
int num3 = 20;

System.out.println(num1 == num2);
System.out.println(num1 != num2);
System.out.println(num1 == num3);
System.out.println(num1 != num3);

/*
* -2 <= x <= 100
* 代码中不能用这种数学上的形式去表示
* */
}

 

(五)逻辑运算符

1、用于处理逻辑运算的运算符

2、处理逻辑:逻辑值,处理结果:逻辑值(待处理的数据时布尔,处理之后结果依然是布尔)

3、& 逻辑与:将符号两侧布尔类型的结果进行合并,做与的操作

 true & true 结果:true(全真为真,一假即假,所有的条件都满足的时候,才能为true,一个条件不满足就是false)

 true & false 结果:false
 false & true 结果:false

 false & false 结果:false

4、| 逻辑或:将符号两侧的布尔类型的结果进行合并,做或运算

 true | true 结果:true(一真为真,全假即假,一个条件满足就是true,所有的条件都不满足的时候,才能为false)

 true | false 结果:true
 false | true 结果:true

 false & false 结果:false

5、&&:短路与:执行结果和逻辑与完全一样(短路与的执行效率更高)

 和逻辑与有一样的执行结果,都具有“一假即假”的一票否决权,当第一个条件判断为false的时候,就不会再去判断第二个条件了。但是逻辑与&,会两个都去判断

6、||:短路或:执行逻辑和逻辑或完全一样(短路或的执行效率更高)

 和短路或一样,都具有“一真即真”的一票通过权,当第一个条件判断为true时,就不会再去判断后面的条件了

7、!:逻辑非:取反,遇真为假,遇假为真

 true:false

代码示例

package com.offcn.demos;

public class Demo17_logic {

public static void main(String[] args) {
int num = 10;
System.out.println(10 > 3 & 10 <9);
System.out.println(10 > 3 | 10 <9);

System.out.println(10 > 3 && 10 <9);

System.out.println(!(10 > 3));
}

 

原文地址:https://www.cnblogs.com/masterhxh/p/13628562.html