目录
1.首先下新建一个文件夹存放代码,
2.新建一个Java文件来存放Java的相关代码。
注意点:文件的后缀名为Java(本文为Hellow.java)
- public class Hello {
-
- //class后面的名字应该和文件名保持一致,否则会报错
-
- public static void main(String[] args){
-
- System.out.print("Hello Word");
- //System.out.print("XXX")打印输出语句
-
- }
-
- }
在cmd的根目录i下进行执行的时候采用javac Hellow.java 来执行文件会生成一个class文件,接着执行java Hellow来执行编译文件就会自动的打印输出Hello word!。
1.编译型:直接编译成系统可以理解的语言。这样的执行速度会更快。
2.解释型:把机器不懂的地方进行解释从而来进行执行。
Java编译器将准备好的源文件编译成了class文件,真正被执行的应该是class文件。此时将class文件放入到类加载器,放在Jvm中进行。字节码校验器来进行代码的校验,校验完成若没有了错误,此时的解释器便开始工作将我们的程序解释给操作系统从而进行解读。

注释(以代码为例):
- public class HelloWord {
- public static void main (String[] args){
- //单行注释:只能注释一行内容
- //输出一个HelloWord
- System.out.println("Hello Word!");
- /*为多行注释:可以注释多行内容*/
- /*System.out.println("Hello Word1!");
- System.out.println("Hello Word2!");
- */
- //JavDdoc文档注释
- /**文档注释:可以加功能
- * @Author 代码贩子、 --南京邮电大学
- */
- }
- }
(标识符):Java中所有的组成部分都需要名字。类名,变量名,以及方法名都称之为标识符。
注意点:所有的标识符都应该以(A——z)、$、或者是下划线开始的。
首字符之后可以是(A——z)、$、或者是下划线的组合。
关键字不可以作为名字。

可以是中文名字但是一般不采用,因为太Low,会被同行看不起。
标识符是大小写敏感的。
Java为一款强类型的语言,所有变量的使用必须严格的符合固定,所有的变量只有被定义后才能进行使用。

重点提示:(有人问为什么long占的字节比float的多还排在float后面?因为在发生转换的时候小数的优先级要大于整数。)不同类型的数据结构先转化为同一类型的,然后再进行计算。
强制转换分为两种,一种是从低到高的转换方法,一种是从高到低的转换方法。

显式(规则:数据范围从低到高):代码不需要进行处理并且直接可以完成转换。
- /**
- * @Author代码贩子、 --南京邮电大学
- */
- public class HelloWord {
- public static void main (String[] args){
- //直接输出一个整数,默认是int型
- System.out.println("30");
- //直接输出一个小数,默认是double型
- System.out.println("3.12");
- //(1)左边是long类型,右边是int类型
- //(2)=进行赋值,右边默认给左边 int——>long满足从低到高的转换规则
- //(3)这一行代码发生了自动转换
- long name1=100;
- System.out.println(name1);
- //(1)右边是float类型,左边是double类型
- //(2)float->double,满足从低到高的转换规则
- //(3)所以发生了自动转换
- double name2=3.1415926F;
- System.out.println(name2);
- //(1)右边是long类型,左边是float类型
- //(2)long->float,满足从低到高的转换规则
- //(3)所以发生了自动转换
- float name3=30L;
- System.out.println(name3);
- }
- }
代码需要进行处理不能够自动的完成转换。
格式:(范围小的类型)+范围小的变量名=(范围小的类型)+原本范围大的数据
注意:(1)在进行前置转换的时候可能会出现内存溢出、精度丢失等现象。
(2)byte/short/char这三种类型可以进行数学计算。
(3)byte/short/cha这三种类型在进行运算的时候首先会被默认为是int卡类型。
(4)布尔类型不可以进行任何的数据转换。
- /**
- * @Author代码贩子、 --南京邮电大学
- */
- public class HelloWord {
- public static void main (String[] args){
- //(1)右边是long类型,左边是int类型
- //(2)long->int 不是从高到低,所以需要进行强制转换
- //(3)格式:(较小的数据类型)+较小的变量名=(较小的数据类型)+(原本范围较大的数据)
- int nume1 = (int) 100L;
- System.out.println(nume1);
- //(1)右边是int类型,左边是int类型
- //(2)int->byte
- //(3)格式:(较小的数据类型)+较小的变量名=(较小的数据类型)+(原本范围较大的数据)
- //写法一:
- int a = 200;
- byte b = (byte) a;
- //写法二:
- byte nume2 = (byte) 200;
- //输出值为-56
- //原因为200超过了byte的数据范围,发生了内存溢出的现象,所以在发生强制转换之后的输出值为负数。
- System.out.println(b);
- System.out.println(nume2);
- float c = 3.14f;
- int d = (int) c;
- //此时的输出值为3
- //因为在强制转换的时候float->int会发生精度丢失的问题,所以最后的输出值为3而不是3.14。
- System.out.println(d);
- //输出的值为97
- char e ='a';
- int f= (int)e;
- System.out.println(f);
- //输出的值为b
- int g= f+1;
- System.out.println((char) g);
- //应该是20000000000,但是实际的结果输出的为一个负数
- //那是因为计算的时候溢出了
- int moeny = 10_0000_0000;
- int years = 20;
- int total = moeny*years;
- System.out.println(total);
- //虽然发生了自动转换还是输出的为负数
- //因为默认是int并且在转换之前就已经出现了问题。
- long total2 = total;
- System.out.println(total2);
- //此时输出的结果为正确的数值
- //输出的结果为20000000000
- //解决方法:先把一个数据转化为long类型
- long total3 = moeny*(long)years;
- System.out.println(total3);
- }
- }
定义:在程序运行期间固定不变的量
格式:final 常量名 = 值;
final double PI = 3.1415926;
常量的分类:
(1)字符串常量:凡是用双引号引起来的量:如“ABC” "Hellow" "123"
(2)整数常量:无小数点的数字:如1 -100 0
(3)浮点型:直接写上的数字,有小数点:如2.5 -3.14 0.0
(4)字符常量:凡是用单引号引起来的单个字符:如‘A’ ‘b’ '1' '中'
(5)布尔常量:只有量中取值:如 true false
(6)空常量:null 代表没有任何的数组
- /**
- * @Author代码贩子、 --南京邮电大学
- */
- public class HelloWord {
- public static void main (String[] args){
- //字符型常量
- System.out.println("kj10");
- System.out.println("");//两个双引号之间的内容为空,也有打印输出
- System.out.println("ABC");
- //整数常量(整数)
- System.out.println(-400);
- System.out.println(0);
- //浮点型(小数)
- System.out.println(3.14);
- System.out.println(-0.25);
- //字符常量
- System.out.println('帅');
- // System.out.println('AB');
- // System.out.println('');//字符常量有且仅有一个字符,不能有两个,也不能为空
- //布尔常量
- System.out.println(true);
- System.out.println(false);
- //空常量
- // System.out.println(null);//空常量不能直接打印输出
- System.out.println();//或者什么都不写可以进行打印输出
- }
- }
定义:可以随时发生变化的量,也是Java程序中最基本的储存单元,其要素包括变量名,变量类型和作用域。
注意点:(1)每个变量都有类型,类可以是基本类型也可以是引用类型。
(2)变量名必须是合法的标识符。
(3)变量声明的是一个完整的语句,所以每一个声明必须都要以分号结束。
(4)修饰符不存在前后的顺序,可以是 final static double PI = 3.1415926;也可以是 static final double PI = 3.1415926;
格式;数据类型 + 变量名 = 值;(可以用逗号隔开来来声明多个同类型的变量)。
- /**
- * @Author代码贩子、 --南京邮电大学
- */
- public class HelloWord {
- public static void main (String[] args){
- //写法一:
- //为了方便程序的可读性,所以不建议这么写
- int a=1,b=2,c=3;
- //写法二(推荐写法):
- int d = 1;
- int e = 2;
- int f = 1;
- }
- }
(1)类变量:写在类里面的变量,加上satatic的关键字。
(2)实例变量:写在方法的外面,类的里面(从属于对象,或者理解为从属于这个类,要通过这个类来使用它,如果不规定初始值则利用的是初始值)并且不需要进行初始化。
(3)局部变量:写在方法里面的变量(包括写在主程序里面的方法),必须声明和初始化值。
- /**
- * @Author代码贩子、 --南京邮电大学
- */
- public class HelloWord {
- //类变量:加上关键字static
- //类变量是从水属于这个类的,会随着这个类一起出来和消失。
- static double saLary = 2500;
- //实例变量:写在方法的外面,类得 里面。从属于对象或者是从属于这个类,要通过这个类才能使用它,可以不设置初始值
- String name;
- int age;
- //主程序的方法或者是叫mian方法
- public static void main (String[] args){
- //局部变量是写在方法里面的,只对这个方法负责,跳出方法之外就不能被使用
- //所有的局部变量必须声明和设置初始值
- int i = 10;
- System.out.println(i);
- //使用面向对象的范畴
- //左边的HelloWord为自定义类型,helloWord为引用类型
- //变量类型+变量名字=值为new 变量HelloWord();将相当于拿到了自己,也就是把自己给自己才能拿到自己的实例变量
- //如果实例化对象不给初始值,则会默认输出默认初始化的数值。
- HelloWord helloWord= new HelloWord();
- System.out.println(helloWord.name);
- System.out.println(helloWord.age);
- //类变量:加上关键字static
- //如果去点static则不会被调用
- System.out.println(saLary);
- }
- //新写的一个增加的方法
- public void add(){
- //这里不能说输出变量i是因为局部变量不在add的方法里面。
- System.out.println(i);
- HelloWord helloWord= new HelloWord();
- //这里的add方法可以调用实例变量,是因为add方法在实例变量的作用域内
- System.out.println(helloWord.name);
- System.out.println(helloWord.age);
- //这里的add方法也作用在类变量的作用域内,所以可以调用类变量
- System.out.println(saLary);
- }
- }
算数运算符:+、-、*、/、%(取余)
- /**
- * @Author代码贩子、 --南京邮电大学
- */
- public class HelloWord {
- public static void main (String[] args){
- long a = 3000000000000000000L;
- int b = 20;
- double c = 3.14;
- int d = 10;
- //因为有double类型的,所以输出为double类型
- System.out.println(a+b+c+d);
- //输出的为3000000000000000020,明显超出了int类型,因为有long类型,这里发生了自动转换,默认为龙类型
- System.out.println(a+b);
- }
- }
赋值运算符:=
赋值运算符:=、+=、-+、*+、/=、%=
(1)+= a +=3 相当于 a=a+3
(2)-= a -=3 相当于 a=a-3
(3)*= a *=3 相当于 a=a*3
(4)/= a /=3 相当于 a=a/3
(5)%= a %=3 相当于 a=a%3
注意事项:只有变量才能使用赋值运算符
- /**
- * @Author代码贩子、 --南京邮电大学
- */
- public class fx{
- public static void main(String[] args){
- int a=10;
- a+=5;
- System.out.println(a);//15
- }
- }
关系运算符:>、<、>=、<=、==(相等)、!=(不等)
注意:(1)比较运算符的结果必须是个布尔型,成了为ture,不成立为false
(2)如果进行多次判断不可以连着写 例如1
- /**
- * @Author代码贩子、 --南京邮电大学
- */
- public static void main(String[] args){
- int a=10;
- int b=20;
- int c=20;
- System.out.println(a>b);//false
- System.out.println(a//true
- System.out.println(a>=b);//flase
- System.out.println(a<=b);//true
- System.out.println(a==b);//false
- System.out.println(a!=b);//ture
- System.out.println(b==c);//true
- }
-
逻辑运算符:&&(与)、||(或)、!(非)
注意:(1)“&&和||”同时使用的时候会出现短路的情况,如果左边已经得到了结果,那么右面的将不再执行。
(2)“&&和||”左右各需要一个布尔型。但是取反只需要一个布尔型即可。
(3)“&&和||”如果有多个条件可以进行连写。
两个条件:条件A&&条件B
三个条件:条件A&&条件B&&条件C
对于1 ++、-- 基本含义:让变量上升或者是下降一个为1的值。 注意:在单独使用的时候++a和a--没有什么区别。 在混合使用的时候:前++为先加后用。变量+1然后拿着加上的值继续使用。 后++为变量直接使用,然后在加上1。 第一步:导入sacnner类 import Java.until.*;(写在公共类的来头) 第二步:创建Scanner对象 Sacnner scanner=new Scanner(system.in);//构造Scanner类的对象sc,接收从控制台输入的信息 第三步:打印输出提示符号 System.out.println("提示文字); 第四步:获取键盘输入的数据 String src=input.nextlnt()/nextLine(); 第五步:打印输出值:System.out.println("打印输出的值为:"); 第六步:hasNext()/hasnextLine()来判断是否还有下一个输入。 练习:键入多个数字,求输入数字的平均值以及总和。在输入数值的时候需要通过回车键来进行确认,并且通过非数值来结束,结束时输出对应的总和以及平均数的计算结果。 定义:Java的基本结构就是顺序结构,除非特殊指明,否则就按照顺序一步一步的执行。 if(关系表达式<或者是布尔表达式>){ if(关系表达式){ 语句体1; }else{ 语句体2; } 注意:如果关系表达式为ture则执行语句体1,如果表达式为false则执行语句体2。 在执行的时候不能两个都执行,也不能两个都不执行。 if(判断条件1){ 语句体1; }else if(判断条件2){ 语句体2; } ........... else if(判断条件n){ 语句体n; }else{ 语句体n+1; } 注意:如果满足条件一,则下下面的将不再执行,如果为false则执行语句体2、3、n。有一个满足的下面的将不再执行。 如果以上的都不满足,将会无条件的执行else里的n+1的条件语句。 小练习:输入指定的考试成绩,判断考试的等级:1.90-100 优秀;2.80-89 良;3.70-79 中;4.60-69 合格;5.0-59 差。 break关键字可以用在switch中,一旦执行,整个switch将立刻结束。
contine关键字立即跳过本次的循环,进入到下一个循环语句当中。 循环结构表 顺序上 应用上 格式 For循环 先判断。在执行。 循环次数确定,通常用for循环。 for(初始化表达式;条件判断;步进语句){ 循环体 } While循环 先判断。在执行。 循环次数不确定,通常用whiler循环。 初始表达式; While(条件判断){ 循环体 步进语句 } Do whlle循环 先执行,在判断 循环次数不确定,通常用whiler循环。 初始表达式; Do{ 循环体 步进语句 }while(条件判断); 在进行执行的时候首先对条件语句进行判断才进行执行,在循环次数不确定的时候通常使用while循环语句。 初始表达式; while(条件判断){ 循环语句; 步进语句; } 小练习:使用whlle循环语句来计算1+2+3+……+100的和。 在执行的时候首先执行才能进行判断,即使不能满足条件也至少执行一次。循环次数不确定,通常用whiler循环。 初始语句; do{ 循环体; 步进语句; }while(条件判断表达式); 在执行的时候先进性判断然后在执行,在执行的时候循环次数确定。 for(初始值;条件表达式;步进语句){ 循环体1; }else{ 循环体2; } 小练习1:求100以内(包括100)的奇数偶数的和以及总体的和。 小练习2:用for循环输出1-1000以内(包含1000)内所有可以被5整除的数,并且每一行只打印三个。 3.小练习:打印等腰三角形 4.小练习:利用for循环打印九九乘法表。 主要用来遍历数组和集合的。 for(声明语句:表达式){ 代码句子; } 1.方法的定义:方法包括一个方法的开头和一个方法体。 修饰符 返回值类型 方法名(参数类型 参数名){ 方法体; return 返回值; } 解释: 修饰符可以有 public static final等 返回值类型如果为void则返回为空,也就是不需要rutern,如果是int等类型需要进行返回, 方法名可以根据命名的规则来自己进行定义,比如增加的add方法和删除的del方法。 参数类型包括两种,一个形式参数和一个实际参数。参数像是一个占位符,可以被选择,也可以不做选择(也就是方法可以 不含参数)。 ***形式参数指的是在方法被调用时来接收外界输入的数据。 ***实际参数指的是调用方法实际传给对方的参数。 方法体:包括定义的具体语句以及定义该方法的功能。 2.方法的调用: 例如:int max =maxmin(30,30); 如果方法为void,方法的调用一定是一条语句。 例如:System.out.println("Hello word");
小练习:调用方法打印正三角形。 2.方法重载 简单的说就是方法名称相同,方法里面包含的参数类型不同。 方法重载的规则: 1.方法名必须相同。 2.参数名称必须不同。(个数不同,类型不同,排列顺序不同等。) 3.方法的返回值可以相同也可以不同。 4.仅仅是返回值类型不同则不可以完成方法的重载。 实现理论:方法名称相同的时候,编译器会根据方法参数类型的个数,参数类型去逐个匹配,以选择对应的方法,如果匹配失败,编译器会报错。
5.自增、自减运算符
二:Scanner与流程控制:
Scanner用法
流程控制
1.顺序结构

if选择结构
1.单if语句
语句体(true就成立执行语句体,false就绕过了语句体,直接输出结束。);
}
2.标准语句

3.扩展语句

switch选择结构
1.break关键字
break关键字也可以用在其他语句中,整个循环语句立刻结束,打断循环。2.default关键字
default的作用是在case匹配失败之后才会被执行,打印出来相对应的输出信息。
3.continue关键字
循环结构
1.while循环

2.do while循环

3.for循环(重点)

4. 增强for
三:方法的定义和调用