Java大数据开发和安全开发
- (一)Java注释符
-
- [1.1 单行注释 //](#1.1 单行注释 //)
- [1.2 多行注释 /* */](#1.2 多行注释 /* */)
- [1.3 文档注释 /** */](#1.3 文档注释 /** */)
- [1.4 各种注释区别](#1.4 各种注释区别)
- [1.5 注释的特点](#1.5 注释的特点)
- [1.5 注释的快捷键](#1.5 注释的快捷键)
- (二)Java的字面量
- (三)Java的变量
-
- [3.1 认识变量](#3.1 认识变量)
- [3.2 为什么要用变量?](#3.2 为什么要用变量?)
- [3.3 变量在计算机中的执行原理](#3.3 变量在计算机中的执行原理)
- [3.4 变量的特点](#3.4 变量的特点)
- [3.5 变量的应用](#3.5 变量的应用)
- [3.6 变量的总结](#3.6 变量的总结)
- [3.7 变量的注意事项](#3.7 变量的注意事项)
- (四)Java关键字和标识符
-
- [4.1 关键字](#4.1 关键字)
- [4.2 标识符](#4.2 标识符)
- (五)变量的详解
-
- [5.1 二进制](#5.1 二进制)
- [5.2 十进制转二进制的算法](#5.2 十进制转二进制的算法)
- [5.3 计算机中表示数据的最小单元](#5.3 计算机中表示数据的最小单元)
- [5.4 其他数据形式是如何存储的](#5.4 其他数据形式是如何存储的)
-
- [5.4.1 字符在计算机中是如何存储的](#5.4.1 字符在计算机中是如何存储的)
- [5.4.2 图片在计算机中是如何存储的](#5.4.2 图片在计算机中是如何存储的)
- [5.5 二进制转十进制](#5.5 二进制转十进制)
- [5.6 八进制和十六进制](#5.6 八进制和十六进制)
- [5.7 计算机的数据单位](#5.7 计算机的数据单位)
- (六)Java的数据类型
-
- [6.1 **`数据类型的分类`**](#6.1
数据类型的分类
) - [6.2 基本数据类型](#6.2 基本数据类型)
- [6.2 引用数据类型](#6.2 引用数据类型)
- [6.3 类型转换](#6.3 类型转换)
-
- [6.3.1 自动类型转换](#6.3.1 自动类型转换)
- [6.3.2 表达式的自动类型转换](#6.3.2 表达式的自动类型转换)
- [6.3.3 强制类型转换](#6.3.3 强制类型转换)
- [6.1 **`数据类型的分类`**](#6.1
- (七)运算符
-
- [7.1 算数运算符](#7.1 算数运算符)
- [7.2 自增自减运算符](#7.2 自增自减运算符)
- [7.3 赋值运算符](#7.3 赋值运算符)
- [7.4 关系运算符](#7.4 关系运算符)
- [7.5 逻辑运算符](#7.5 逻辑运算符)
- [7.6 三元运算符](#7.6 三元运算符)
- [7.7 运算符的优先级](#7.7 运算符的优先级)
- (八)键入数据
(一)Java注释符
注释是写在程序中对代码进行解释说明的文字,方便自己和其他人查看,以便理解程序的。
1.1 单行注释 //
java
public class NoteDemo {
public static void main(String[] args) {
// 以下是一个打印语句,是往控制台输出内容的
System.out.println("hello world");
}
}
1.2 多行注释 /* */
java
public class NoteDemo {
public static void main(String[] args) {
System.out.println("hello world");
/*
System.out.println("hello world");
System.out.println("hello world");
System.out.println("hello world");
*/
}
}
1.3 文档注释 /** */
java
/**
目标:学会使用注释
这个程序就是讲解注释的
*/
public class NoteDemo {
public static void main(String[] args) {
System.out.println("hello world");
}
}
1.4 各种注释区别
1.5 注释的特点
注释不影响程序的执行
1.5 注释的快捷键
(二)Java的字面量
计算机是用来处理数据的,字面量就是告诉程序员:数据在程序中的书写格式,也就是各种数据在java中怎么表达,比如数字,字符,字符串怎么表达
java
public class LiteralDemo {
public static void main(String[] args) {
// 目标:需要同学们掌握常见数据在程序中的书写格式吧。
// 1、整数
System.out.println(666);
// 2、小数
System.out.println(99.5);
//3、字符:必须要用单引号围起来,有且只能有一个字符
System.out.println('a');
System.out.println('0');
System.out.println('中');
// System.out.println('中国'); 两个字符
System.out.println(' '); //空字符
// System.out.println(''); 不能不写
// 特殊的字符:\n 代表的是换行的意思 \t代表的是一个tab
System.out.println('中');
System.out.println('\n');
System.out.println('国');
System.out.println('\t');
// 4、字符串:必须用双引号围起来,里面的内容其实可以随意
System.out.println("我爱你中国abc");
System.out.println(" ");
System.out.println("");
System.out.println("我");
// 5、布尔值:只有2个值 truefalse
System.out.println(true);
System.out.println(false);
}
}
(三)Java的变量
变量的学习路径
3.1 认识变量
什么是变量 ?
- 变量是用来记住程序要处理的数据的。
变量的定义格式
java
int age = 23;
3.2 为什么要用变量?
- 使用变量记要处理的数据,编写的代码更灵活,管理代码更方便。
java
public class VariableDemo {
public static void main(String[] args) {
// 目标:认识变量,掌握使用变量的好处,变量的特点,应用场景。
// 1、定义一个整型变量记住一个整数
// 数据类型 变量名= 数据;
// 注意:=在Java中是赋值的意思,从右往左看
int age = 23;
System.out.println(age);
// 2、记住一个人的成绩
double score = 99.5;
System.out.println(score);
System.out.println("----");
//3、使用变量的好处:便于扩展和维护。
System.out.println(666); //想把666改成888 需要每个都改
System.out.println(666);
System.out.println(666);
int number = 888;
System.out.println(number); //想把888改成666 只需要改变量即可,这就是便于维护
System.out.println(number);
System.out.println(number);
System.out.println(number);
}
}
3.3 变量在计算机中的执行原理
- 变量就是内存中的一块区域,可以理解成一个盒子,用来装一个数据的!
3.4 变量的特点
变量中装的数据是可以被替换的
java
// 4、变量的特点:里面装的数据可以被替换
int age2 = 18;
System.out.println(age2);
age2 = 19;//赋值:从右边往左边执行
System.out.println(age2);
age2= age2 + 1;// 赋值:从右边往左边执行
System.out.println(age2);
3.5 变量的应用
写程序对数据进行处理就很方便
java
// 5、需求:钱包有9.5元,收到了10元红包,又发出去了5元红包,请输出各阶段钱包的情况
double money=9.5;// 钱包
System.out.println(money);
// 收红包10元。
money = money + 10;
System.out.println(money);
// 发出去5元。
money = money - 5;
System.out.println(money);
3.6 变量的总结
3.7 变量的注意事项
(四)Java关键字和标识符
4.1 关键字
-
Java语言自己用到的一些词,有特殊作用的,我们称之为关键字,如:public、class、int、double...
-
注意:关键字是java用了的,我们就不能用来为做为:类名、变量名,否则会报错!
4.2 标识符
标志符就是名字,我们写程序时会起一些名字,如类名
、变量名
等等都是标识符。
标识符的要求
- 基本组成:由数字、字母、下划线()和美元符($)等组成
- 强制要求:不能以数字开头、不能用关键字做为名字、且是区分大小写的。
标识符的建议规范
- 变量名称:满足标识符规则,同时建议用英文、有意义、首字母小写,满足"驼峰模式"例如:int studyNumber = 59;
- 类名称:满足标识符规则,建议全英文、有意义、首字母大写,满足"驼峰模式",例如: HelloWorld, Student
(五)变量的详解
数字是以二进制的形式存储的
5.1 二进制
- 只有0、1,按照逢2进1的方式表示数据
5.2 十进制转二进制的算法
5.3 计算机中表示数据的最小单元
- 计算机中表示数据的最小单元:一个字节(bvte,简称B,是使用8个二进制位组成的)
- 字节中的每个二进制位就称为位(bit,简称b),1B=8b
5.4 其他数据形式是如何存储的
5.4.1 字符在计算机中是如何存储的
java
public class ASCIIDemo {
public static void main(String[] args) {
// 目标:掌握ASCII编码表的编码特点。
System.out.println('a'+10);//97 + 10 = 107 a的值对应的是编码表里的值97
System.out.println('A'+10);//65 + 10 = 75
System.out.println('0'+10);//48 + 10 = 58
}
}
5.4.2 图片在计算机中是如何存储的
- 图片就是无数个像素点组成的
- 每个像素点的数据:用0~255255255表示其颜色
先存储每个像素点的数值 ,每个像素点由三位数 255 0 255 ,计算机挨个保存每个像素点的值就可以存储一张图片
5.5 二进制转十进制
5.6 八进制和十六进制
- 为了便于观察和表示二进制,推出了八进制和十六进制。
- 每3位二进制作为一个单元,最小数是0,最大数是7,共8个数字,这就是八进制。
- 每4位二进制作为一个单元,最小数是0,最大数是15,共16个数字,依次用:0~9ABCDEF 代表就是十六进制。
java
//二进制 八进制 十六进制在程序中的写法。
int a1 =0B01100001;
System.out.println(a1);
int a2 = 0141; // 0开头的数据当成八进制看待!
System.out.println(a2);
int a3= 0XFA; // 0X开头的数据是十六进制
System.out.println(a3);
5.7 计算机的数据单位
- 计算机表示数据的最小组成单元是:字节,1B=8b。
- 在B的基础上,计算机发展出了KB、MB、GB、TB、...... 这些数据单位!
(六)Java的数据类型
6.1 数据类型的分类
6.2 基本数据类型
基本数据类型:4大类8种
java
public class VariableDemo2 {
public static void main(String[] args) {
// 目标:掌握基本数据类型的使用。
// 1、byte short int long
byte a=127; // -128-127
// byte a2=128;// 越界了
short s= 13244;
//short s1=93244;//越界了
int i = 422424;// 默认
//|注意:随便写一个整型字面量默认是int类型的,424242244444虽然没有超过long的范围,但是超过了本身int类型的范围
// 如果希望随便写一个整型字面量默认是long类型的,需要在后面加上L/l
long lg = 424242244444L;
// 2、float double// 注意:随便写小数字面量,默认是double,如果希望小数是float,后面加上F/f
float f = 3.14F;
double d = 56.45;
//3、char 字符型
char ch='a';
char ch2='中';
// 4、boolean
boolean flag =true;
boolean flag2 = false;
//5、String
// 拓展一种引用数据类型,后面要用
// String 称之为字符串类型,定义的变量可以用于记住一个字符串数据
String name ="张三";
System.out.println(name);
}
}
6.2 引用数据类型
java
//5、String
// 拓展一种引用数据类型,后面要用
// String 称之为字符串类型,定义的变量可以用于记住一个字符串数据
String name ="张三";
System.out.println(name);
6.3 类型转换
- 1、存在某种类型的变量赋值给另一种类型的变量
- 2、存在不同类型的数据一起运算
6.3.1 自动类型转换
类型范围小的变量,可以直接赋值给类型范围大的变量
java
public class TypeConversionDemo {
public static void main(String[] args) {
// 目标:理解自动类型转换机制。
byte a= 12;
int b = a;//发生自动类型转换
System.out.println(a);
System.out.println(b);
}
}
自动类型转换原理:
byte 占1个字节
int 占4个字节
类型范围小的变量,可以直接赋值给类型范围大的变量
自动类型转换的其他形式
java
public class TypeConversionDemo {
public static void main(String[] args) {
// 目标:理解自动类型转换机制。
int c= 100;//4字节
double d=c;//8字节 发生了自动类型转换了
System.out.println(d);
char ch='a';// 2字节 'a'97 =>00000000 01100001
int i=ch;// 4字节 发生了自动类型转换了=> 00000000 00000000 00000000 01100001
System.out.println(i);
}
}
6.3.2 表达式的自动类型转换
-
不同类型的变量或者数据一起远算,最终运算出的数据的类型是什么??
-
在表达式中,小范围类型的变量,会自动转换成表达式中较大范围的类型,再参与运算
注意事项:
- 表达式的最终结果类型由表达式中的**
最高类型决定
** - 在表达式中,byte、short、char 是直接转换成int类型参与运算的。
java
public class TypeConversionDemo2 {
public static void main(String[] args) {
// 目标:掌握表达式的自动类型转换机制。
byte a = 10;
int b = 20;
long c = 30;
long rs = a + b + c; //表达式的最终结果类型由表达式中的**`最高类型决定`**
System.out.println(rs);
double rs2 = a + b + 1.0; //表达式的最终结果类型由表达式中的**`最高类型决定`**
System.out.println(rs2);
byte i = 10;
short j= 30;
int rs3 = i + j; //在表达式中,byte、short、char 是直接转换成int类型参与运算的
System.out.println(rs3);
// 面试笔试题:
byte b1 = 110; //byte的范围是-128-127 110+80=190 超过了byte的范围 为了防止运算错误程序自动转换成了int
byte b2 = 80;
int b3 = b1 + b2; //在表达式中,byte、short、char 是直接转换成int类型参与运算的
System.out.println(b3);
}
}
6.3.3 强制类型转换
- 类型范围大的数据或者变量,直接赋值给类型范围小的变量,会报错
-
可以强行将类型范围大的变量、数据赋值给类型范围小的变量
byte b =(byte)a;
java
public class TypeConversionDemo3 {
public static void main(String[] args) {
// 目标:掌握强制类型转换。
int a= 20;
byte b =(byte)a; // ALT + ENTER 强制类型转换。
System.out.println(a);
System.out.println(b);
}
}
强制类型转换在计算机中的执行原理
java
public class TypeConversionDemo3 {
public static void main(String[] args) {
// 目标:掌握强制类型转换。
int i = 1500;
byte j=(byte) i;
System.out.println(j);
}
}
java
double d = 99.5;
int m =(int)d;// 强制类型转换
System.out.println(m);//丢掉小数部分,保留整数部分
>>>99
注意事项
- 强制类型转换可能造成数据(丢失)溢出
- 浮点型强转成整型,直接丢掉小数部分,保留整数部分返回
(七)运算符
7.1 算数运算符
java
public class OperatorDemo {
public static void main(String[] args) {
// 目标:掌握基本的算术运算符的使用。
int a = 10;
int b = 2;
System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);//20
System.out.println(a / b);//5
System.out.println(5 / 2);//2.5 ==> 2
System.out.println(5.0 / 2);//2.5 想要的到小数
int i = 5;
int j = 2;
System.out.println(1.0 * i / j);// 2.5
System.out.println(a % b);//0
System.out.println(3 % 2);//1
}
}
+符号可以做连接符的
-
+符号与字符串运算的时候是用作连接符的,其结果依然是一个字符
-
怎么判断是连接符还是运算符
独门秘籍
能算则算,不能算就在一起。(计算机很聪明)
java
public class OperatorDemo {
public static void main(String[] args) {
// 目标2:掌握使用+符号做连接符的情况。
int a2 = 5;
System.out.println("abc"+ a2);//"abc5"
System.out.println(a2+5);//10
System.out.println("itheima" + a2 +'a'); // "itheima5a"
System.out.println(a2+'a'+ "itheima"); // 102itheima
}
}
7.2 自增自减运算符
注意
:
- ++、-- 只能操作变量,不能操作字面量的
java
public class OperatorDemo2 {
public static void main(String[] args) {
// 目标:掌握自增自减运算符的使用。
int a= 10;
a++; // a = a + 1
++a;
System.out.println(a);
a--;//a = a - 1
--a;
System.out.println(a);
// System.out.println(2++);// 自增减只能操作变量不能操作字面量的,会报错!
}
}
- ++、-- 如果不是单独使用(如在表达式中、或者同时有其它操作),放在变量前后会存在明显区别
- 如果单独使用放前放后是没有区别的,
- 非单独使用:在变量前,先进行变量自增/自减,再使用变量。
- 非单独使用:在变量后,先使用变量,再进行变量自增/自减。
java
public class OperatorDemo2 {
public static void main(String[] args) {
// 目标:掌握自增自减运算符的使用。
int i= 10;
int rs=++i;// 先加后用
System.out.println(rs);
System.out.println(i);
int j= 10;
int rs2 =j++;// 先用后加
System.out.println(rs2);
System.out.println(j);
}
}
自增、自减拓展案例
java
int m=5;
int n = 3;
//m 5 6 5 4
//n 3 4 3
// 6 - 5 + 5 - 4 + 4 +
int result = ++m - --m + m-- - ++n + n-- + 3;
System.out.println(result);//9
System.out.println(m);//4
System.out.println(n);//3
7.3 赋值运算符
基本赋值运算符
- 就是"=",从右边往左看
扩展赋值运算符
注意:扩展的赋值运算符隐含了强制类型转换
java
public class OperatorDemo3 {
public static void main(String[] args) {
// 目标:掌握扩展赋值运算符的使用。
// +=
// 需求:收红包
double a=9.5;
double b=520;
a += b;// a = (double)(a + b); //赋值运算符隐含了强制类型转换
System.out.println(a);
//-= 需求:发红包
double i= 600;
double j= 520;
i-=j;//i = (double)(i-j);
System.out.println(i);
int m= 10;
int n=5;
m *= n;//等价形式:m = (int)(m * n)
m /= n;//等价形式:m = (int)(m / n)
m %= n;//等价形式:m = (int)(m % n)
System.out.println(m);
}
}
练习题:
java
public class OperatorDemo3 {
public static void main(String[] args) {
// 目标:掌握扩展赋值运算符的使用。
byte x=10;
byte y= 30;
// x = x + y;// 编译报错 byte = int + int 不成立了
// x = (byte)(x + y); //赋值运算符隐含了强制类型转换 byte = byte(int + int)
// x += y; //等价形式:x = (byte)(x + y);
System.out.println(x);
}
}
7.4 关系运算符
- 判断数据是否满足条件,最终会返回一个判断的结果,这个结果是布尔类型的值:true或者false。
java
public class OperatorDemo4 {
public static void main(String[] args) {
int a = 10;
int b = 5;
boolean rs = a > b;
System.out.println(rs);
System.out.println(a >= b);//要么a大于b,或者a等于b
System.out.println(2 >= 2);// true
System.out.println(a < b);
System.out.println(a <= b);// false
System.out.println(2 <= 2);// true
System.out.println(a == b); // false
System.out.println(5 ==5);// true
//System.out.println(a = b);// 注意了:判断是否相等一定是用 == ,=是用来赋值的。
System.out.println(a != b);//true
System.out.println(10 != 10);// false
}
}
7.5 逻辑运算符
- 把多个条件放在一起运算,最终返回布尔类型的值:true、false
java
public class OperatorDemo5 {
public static void main(String[] args) {
// 目标:掌握逻辑运算符的使用。
// 需求:要求手机必须满足尺寸大于等于6.95,且内存必须大于等于8
double size =6.8;
int storage = 16;
//1、&前后的条件的结果必须都是true,结果才是true.
boolean rs = size >= 6.95 & storage >= 8;
System.out.println(rs);
// 需求2:要求手机要么满足尺寸大于等于6.95,要么内存必须大于等于8
// 2、|只要多个条件中有一个是true,结果就是true.
boolean rs2 = size >= 6.95 | storage >= 8;
System.out.println(rs2);
// 3、!取反的意思
System.out.println(!true);// false
System.out.println(!false);//true
System.out.println(!(2 > 1));// false
// 4、^前后条件的结果相同时返回false,不同时返回true.
System.out.println(true ^ true);// false
System.out.println(false ^ false);// false
System.out.println(true ^ false);// true
System.out.println(false ^ true);// true
}
}
注意:
- 在java中,"&","|" 无论左边是 false还是 true,右边都要执行
- 由于&&、|| 运算效率更高、在开发中用的更多
java
public class OperatorDemo5 {
public static void main(String[] args) {
//5、&& 左边为false,右边不执行。
int i = 10;
int j= 20;
System.out.println(i>100 && ++j>99);
System.out.println(i>100 & ++j > 99);
System.out.println(j);
//6、||左边是true ,右边就不执行。
int m = 10;
int n= 30;
System.out.println(m > 3 || ++n > 40);
System.out.println(m > 3 | ++n > 40);
System.out.println(n);
}
}
7.6 三元运算符
三元运算符介绍:
- 执行流程:首先计算关系表达式的值,如果值为true,返回值1,如果为false,返回值2.
java
public class OperatorDemo6 {
public static void main(String[] args) {
// 目标:掌握三元运算符的基本使用。
double score = 58.5;
String rs = score >= 60 ? "成绩及格" : "成绩不及格";
System.out.println(rs);
// 需求2:找出2个整数中的较大值,并输出。
int a = 99;
int b = 69;
int max = a > b ? a : b;
System.out.println(max);
// 需求3:找3个整数中的较大值。
int i = 10;
int j = 45;
int k = 34;
// 找出2个整数中的较大值。
int temp = i > j ? i :j;
// 找出temp与k中的较大值
int max2 = temp > k ? temp : k;
System.out.println(max2);
}
}
7.7 运算符的优先级
- 在表达式中,哪个运算符先执行后执行是要看优先级的,例如"*、/"的优先级高于"+.
(八)键入数据
需求:
- 请在程序中,提示用户通过键盘输入自己的姓名、年龄,并能在程序中收到这些数据,怎么解决?.
- 需要自己研发技术来实现吗?
不需要!
Java已经写好了实现程序
,我们调用即可!
怎么调用程序
- 翻看上一篇笔记JDK的组成,编写好的程序需要开发工具javac进行编译,开发工具java进行运行,输送到JVM执行代码
JVM调用核心类库的程序System.out.println()才能使用打印输出程序输出hello world,
核心类库也叫API,APl(Application Programming Interface:应用程序编程接口)
-
Java写好的程序,咱们程序员可以直接拿来调用。
-
Java为自己写好的程序提供了相应的 程序使用说明书(API文档)。
java
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
// 1、导包:一般不需要我们自己做,idea工具会自动帮助我们 导包的。
// 2、抄写代码:得到一个键盘扫描器对象(东西)
Scanner sc=new Scanner(System.in);
//3、开始 调用sc的功能,来接收用户键盘输入的数据。
System.out.println("请您输入您的年龄:");
int age = sc.nextInt();// 执行到这儿,会开始等待用户输入一个整数,直到用户按了回车键,才会拿到数据。
System.out.println("您的年龄是:" + age);
System.out.println("请您输入您的名字:");
String name = sc.next();// 执行到这儿,会开始等待用户输入一个字符串,直到用户按了回车键,才会拿到数据。
System.out.println(name + "欢迎您进入系统~~");
}
}