【名师课堂】Java零基础入门

【名师课堂】Java零基础入门

26课时 |
79037人已学 |
(30 评论)

加入学习
加入学习

程序逻辑控制

程序的执行一共有三类形式:顺序结构,分支结构,循环结构。

 

顺序结构指的是所有的代码按照定义的先后执行,就好比之前在主方法中所编写的代码一样,按照定义顺序一行行执行。

 

分支结构指的是进行逻辑判断,当满足与某些条件的时候才会执行某些语句。而对于分支结构有两类:if分支结构,switch分支结构。

if分支结构的基础语法如下:

if (布尔表达式){

        条件满足时的执行代码;

}else if (布尔表达式){

         条件满足时执行的代码;

}...[else {

         所有条件都不满足时执行的代码;

}]

范例:使用if语句

public class If{
	public static void main(String args[]) {
		int age = 18;
		if(age >= 18) {
			System.out.println("姑娘大了,可以嫁人了!");
		}
	}
}

范例:使用if。。else语句

public class If1{
	public static void main(String args[]) {
		int age = 16;
		if(age >= 18) {
			System.out.println("姑娘大了,可以嫁人了!");
		}else {
			System.out.println("孩子还太小,再等等!");
		}
	}
}

范例:多条件判断

public class If2{
	public static void main(String args[]) {
		int age = 16;
		if(age <= 18) {
			System.out.println("未成年");
		}else if(age > 18 && age < 23) {
			System.out.println("还在上学!");
		}else {
			System.out.println("随便折腾吧!!");
		}
	}
}

 

使用if...else这样的语法可以实现条件的判断,

但是如果要想进行多数值内容的判断那么就可以使用switch完成,但是需要注意switch随着jdk版本的变化支持的数据类型也在不停的变化

  • 最初的数据类型支持:int,char;
  • 从jdk1.4开始支持了枚举(enu);
  • 从jdk1.7开始支持了String;

switch语法

switch(数字 | 枚举 | 字符 | 字符串){

       case 内容1 : {

                    内容满足时执行的语句;

                    [break;]

        }

       case 内容2 : {

                    内容满足时执行的语句;

                    [break;]

        }...[

        default:{

                    都不满足的时候执行的语句;

                     [break;]

       } ]

}

 

范例:观察switch语句

public class Switch{
	public static void main(String args[]) {
		int a = 1;
		switch(a) {
			default : {
				System.out.println("没有条件被满足!");
			}
			case 1:{
				System.out.println("1");
			}
			case 2:{
				System.out.println("2");
			}
		}
	}
}

上面这种情况,1和2都被打印出来了。

switch这种开关语句有一种重要的特点:如果你在编写case的时候没有加上break。则会在满足的case语句之后一直执行,执行到遇到break,或全部结束。

jdk1.7开始支持String;

//jdk1.7开始支持String
public class Switch1{
	public static void main(String args[]) {
		String a = "hello";
		switch(a) {			
			case "hello":{
				System.out.println("1");
				break;
			}
			case "world":{
				System.out.println("2");
				break;
			}
			default : {
				System.out.println("没有条件被满足!");
			}
		}
	}
}

 

[展开全文]
里程碑 · 2017-12-22 · 程序逻辑控制(分支结构) 0

位运算(了解)

位运算指的是可以按照二进制,八进制,十六进制进行数据处理。基本上考虑最多的还是二进制。在位运算之中,可以采用数据移位的处理方式实现一些数据的内容变化。

 

位运算实现的关键问题在于要进行十进制与二进制的转换,这种转换原则是数据除2取余,直到除到零为止,余数按照倒序排列。

  • 8进制:029;
  • 16进制:0x30;

 

[展开全文]
里程碑 · 2017-12-20 · Java运算符(位运算符) 0

逻辑运算

逻辑运算主要就是三类:与,或,非。

观察非操作:

public class Math8{
	public static void main(String args[]) {
		int a = 10;
		int b = 20;
		System.out.println(!(a > b));//true
		//本来10不大于20,应该是false,但是使用了非操作,变为了true
	}
}

在逻辑运算中最为麻烦的部分就是与和或两个操作,因为其各有两种写法。

  • 与操作:&,&&;
  • 或操作:| ,||。
1、与操作:在进行多个条件判断的时候,只有所有的条件都满足了才有可能进入;
 
 &:使用单与的时候明确的表示多个条件都需要判断,可是如果说前面的条件已经是false,无论后面有多少个true,最后返回的结果都是false,所以理论上后面的判断不应该在执行了,那么就可以使用‘&&’(短路与);
 
2、或操作:或操作的特点若干个判断条件只要有一个是true,那么最终的结果就是true,不管后面究竟有多少个false。
 
 从此以后所编写的逻辑运算之中,都使用我们的&&和||进行操作。
 
[展开全文]
里程碑 · 2017-12-20 · Java运算符(逻辑运算符) 0

关系运算符

如果要进行关系运算的操作我们可以使用:>, < ,>= ,<=, !=,==.所有的关系运算符判断完成数据的返回结果都是布尔类型(boolean)。

范例:进行关系判断

public class Math6{
	public static void main(String args[]) {
		int a = 10;
		int b = 20;
		System.out.println(a > b);//false
		System.out.println(a < b);//true
	}
}

需要提醒的是,可以直接将字符与数字进行判断。

public class Math7{
	public static void main(String args[]) {
		System.out.println('a' == 97);//true
		System.out.println('0' == 0);//false
		//字符0的编码并不是0,所以只会是false
	}
}

 

 

 

 

 

 

 

[展开全文]
里程碑 · 2017-12-20 · Java运算符(关系运算符) 0

java三目运算(重点)

三目是一种赋值运算,他指的是根据条件来进行进行判断。对于三目运算的基本使用语法如下:

  • 数据类型 变量 = 布尔表达式 ? 条件满足时赋值语句 :条件不满足时赋值内容;

范例:将两个变量之中大的内容赋值给新变量。

public class Math4{
	public static void main(String args[]) {
		int a = 10;
		int b = 20;
		//如果a>b的条件为true,result的内容就是a,如果不满足result的内容就是b。
		int result = a > b ? a : b;
		System.out.println(result);//20
	}
}

如果有的时候你实在不清楚这种三目运算,你

也可以写成if判断。

public class Math5{
	public static void main(String args[]) {
		int a = 10;
		int b = 20;
		int result = 0;
		if(a > b) {
			result = a;
		}else {
			result = b;
		}
		System.out.println(result);//20
	}
}

但是我们如果不使用三目运算符,整个代码所跨越的行太多了。

 

 

 

 

 

[展开全文]
里程碑 · 2017-12-20 · Java运算符(三目运算符) 0

java运算符

数学整个程序的基础,所以各种常用的计算符号,基本java都会提供。程序可以提供的只是最为基础的数学运算支持,如果需要完成更为复杂的计算,你需要自己进行二进制的处理了。

在以后你写的代码之中,千万别写出以下的复杂计算:

public class Math{
	public static void main(String args[]) {
		int x = 10;
		int y = 20;
		int result = x - y++ + x * y -- - --x * y / x--;
		System.out.println(result);//180
	}
}

对于程序的计算而言,千万别写的谁也不知道。以后写的代码都写简单代码。

基本四则运算实例:

public class Math1{
	public static void main(String args[]) {
		int x = 10;
		int y = 20;
		System.out.println(x  - y);//-10
		System.out.println(x  + y);//30
		System.out.println(x  * y);//200
		System.out.println(x  / y);//0
	}
}

但是也需要考虑另外一种情况,所有的运算符都是有其优先级的,这些优先级不需要背,一般用括号来改变优先级。

public class Math2{
	public static void main(String args[]) {
		int x = 10;
		int y = 20;
		System.out.println((x  - y)*(x + y));//-300
	}
}

另外在数学计算里面有一个自增和自减的操作。

自增运算:

  • ++ 变量:先自增后进行运算
  • 变量 ++:先运算再进行自增

自增观察:

public class Math3{
	public static void main(String args[]) {
		int x = 10;
		int y = 20;
		int result = ++x * y;
		//++x先执行成11,然后11 * 20
		System.out.println(result);//220
		System.out.println(x);//11
		int result1 = x++ * y;
		//x*y,然后x自增
		System.out.println(result1);//220
		System.out.println(x);//12
	}
}

如果实在记不住,就分开写。

 

自减运算:

  • --变量:先进行自减处理,然后进行运算
  • 变量--:先进行运算,而后进行自减处理
 

 

[展开全文]

方法是一段可以被重复调用的代码块。

public static 发放返回值 发放名称([参数类型 变量,.....]){

   方法体;

[return [返回值];]

}

  在定义发放的时候对于方法的返回值有两类:

  • void:没有返回值;
  • 数据类型(基本类型、引用类型)

在定义一个方法的时候特别需要注意:

如果某一个方法使用了void 定义(无返回值),那么可以用return来结束调用。一般而言,这种return的处理,往往需要结合if判断来实现。

[展开全文]

循环结构

循环结构就是某几行代码杯一直重复执行的操作形式。循环一般会有两类循环:while循环、for循环。

1、while循环:

while (循环的结束条件判断){

    循环语句;

    修改循环结束条件判断;

1、 do while循环:

do{

循环语句;

修改循环结束条件判断;

}

while (循环的结束条件判断){

    循环语句;

    修改循环结束条件判断;

for (循环初始化条件;循环结束判断;修改循环条件){

循环体代码;

循环使用原则:

对于不知道循环次数,但是知道循环结束条件的使用while循环;

如果已经明确指导循环次数,则使用for循环;

[展开全文]
时光如流沙 · 2017-12-09 · 程序逻辑控制(循环结构) 0

顺序结构:是所有的代码按照定义的顺序先后执行,就好比之前主方法中所编写的代码一样,按照定义顺序一行一行执行;

分值结构:指的是进行逻辑判断,当满足与某些条件的时候,才会执行某些语句。而对于分支结构有两类:if分支结构、swith分支结构。

if分支的结构如下:

使用if...else这样的语法可以实现条件的判断,但是如果要想进行多数值内容的判断那么就可以使用swich完成,但是需要注意的是switch随着JDK版本的变化,支持的数据类习惯也在变化。

  • 最初的数据类型支持:int、char;
  • 从JDK 1.4开始支持了枚举(enu);
  • 从JDK1.7开始支持了String;

循环结构:

 

switch(数字|枚举|字符|字符串|){

       case 内容 1:

内容满足时执行的语句;

  [break;]

 

 

[展开全文]
时光如流沙 · 2017-12-09 · 程序逻辑控制(分支结构) 0

String型(字符串)

char描述的只是单个字符,但是如果描述某个人的姓名单一字符做不到。那就要使用String型。

但是要说明的是。string并不是一个基本的数据类型,String是一个引用数据类型,不过这种类型在使用中比较特殊,可以按照基本数据类型的使用模式来进行套用。

范例:观察String型

public class Boolean{
  public static void main(String args[]){
    String site = "隔壁";
    String name = "老王";
    System.out.println(site + name);//+表示的是字符串的拼接
  }
}

范例:观察加号问题

public class Boolean{
  public static void main(String args[]){
    String site = "隔壁";
    String name = "老王";
    int num = 1;
    double num1 = 10.1;
    System.out.println(site + name + num + num1);//+表示的是字符串的拼接 结果为隔壁老王110.1
  }
}

一旦在+的操作中出现字符串则表示的是字符串的拼接。都变为String类型。

()可以解决优先级问题。

转义字符:

表示换行(\n),

缩进(\t),

\(\\),

'(\')

[展开全文]

布尔型

布尔是一位数学家的名字,发明了两个单词:true,false。一般布尔类型都只表示逻辑的计算结果。

范例:观察布尔型的操作

public class Boolean{
  public static void main(String args[]){
    boolean flag = 10 > 2 ;
    System.out.println(flag);//true
  }
}
public class Boolean{
  public static void main(String args[]){
    boolean flag = 10 > 2 ;
    System.out.println(flag);//true
    if(flag){
      System.out.println("Helloworld");//Helloworld
    }
  }
}

但是对于布尔型的内容需要说明:在其他语言中由于没有提供有布尔型的数据,会使用数字来描述布尔型,例如:0标识false,非0表示true。

 

[展开全文]
里程碑 · 2017-12-02 · Java数据类型划分(布尔型) 0

字符型

虽然在开发中会用到字符型的概念,但是真正去操作的情况并不多。

字符型使用char进行声明,而且用单引号来声明字符变量的内容,同时字符型可以与int互相转换。

范例:观察字符型

public class Intyichu{
  public static void main(String args[]){
    char c = 'A';//定义了字符
    System.out.println(c) ; //A
  }
}

在整个字符型的处理中,最麻烦的就在于它可以与int类型互相转换,char变为int内容的时候,其所包含的内容就是编码

范例:观察编码的出现

public class Intyichu{
  public static void main(String args[]){
    char c = 'A';//定义了字符
    int num = c;//将字符变为int型
    System.out.println(num) ; //65
  }
}

常用范围:

  • 大写字母(A-Z):65-90
  • 小写字母(a-z):97-122
  • 字符数字0-9不是一个概念
范例:实现大写字母变为小写字母
public class Intyichu{
  public static void main(String args[]){
    char c = 'A';//定义了字符
    int num = c + 32;//将字符变为int型
    System.out.println(num) ; //97
    char result = (char)num;
    System.out.println(resulr);//a
  }
}

java中的使用的编码并不是ascii码而是unicode码,这种编码包含ascii码的编码范围,但是又多于ascii码。

这种编码是16进制编码,这种编码可以保存任何的文字信息,包括中文。

范例:保存中文

public class Intyichu{
  public static void main(String args[]){
    char c = '王';
    int num = (int)c;
    System.out.println(num) ; //29579
  }
}

但是java中对于字符的特性支持比较好,所以还有另外一类神奇的用法。

范例:神奇的java

public class 程序{
  public static void main(String args[]){
    int 变量1 = 10;
    System.out.println(变量1);//10
  }
}

打破了命名规则,虽然可以但是尽量别用。

[展开全文]
里程碑 · 2017-12-02 · Java数据类型划分(字符型) 0

浮点数

如果要想描述的小数的数据,默认的数据类型是double;

范例:定义小数

public class Intyichu{
  public static void main(String args[]){
    double num = 10.2;//这是一个小数,默认类型就是double类型
    //num是double类型 * int型常量 = double类型
    //num * 2.0(由int变为double型)
    System.out.println(num);
  }
}

而同时最需要注意的是,double可以保存的数字是最大的,也就是说double可以保存全宇宙中最大的有意义数字。

float也可以用来描述小数,但是float的数据范围要小于double,而且要求在定义的时候进行强制转换,在数字后面加一个字母'f','F

实例:

public class Intyichu{
  public static void main(String args[]){
    float f1 = 1.1F;
    //float变量 * int常量 = float类型
    System.out.println(f1 * 2);
    System.out.println(1.1 * 1.1);//传统bug 1.2100000000000002
  }
}

 

说到小数,不得不说一下整型的计算问题

实例:

public class Intyichu{
  public static void main(String args[]){
    int num1 = 10 ;
    int num2 = 4 ;
    //int型除以int型 = int型
    System.out.println(num1 / num2) ; //2
  }
}

如果要保证精度就必须保证其中一个是double或float型。

以后要进行除法运算的时候请一定要注意好你的类型。

[展开全文]

整型类型

在java中任意一个整形类型都是int型.

在整型的操作的过程中也会存在有一个数据溢出的问题,指的是当已经达到整型的最大值或最小值,进行数学计算而可能产生的错误数据.

变量的命名使用小驼峰法:maxValue;

Integer.MAX_VALUE;最大值

Integer.MIX_VALUE;最小值

public class Intyichu{
  public static void main(String args[]){
    int num = Integer.MAX_VALUE;//最大值
    System.out.println(num + 1);//溢出,加一变为最小值
  }
}

解决int溢出问题,解决方案只有一个那就是跟换数据类型,使用long类型.

  • 将int的数据变量赋值给long类型再计算
public class Intyichu{
  public static void main(String args[]){
    int num = Integer.MAX_VALUE;//得到整形最大值
    long result = num;//将其赋给long数据类型
    System.out.println(result + 1);//这样就不会存在数据溢出的问题了
  }
}
  • 将int的数据类型变为long
public class Intyichu{
  public static void main(String args[]){
    int num = Integer.MAX_VALUE;//得到整形最大值
    long result = (long)num + 1;//先将其变为long数据类型
    System.out.println(result);//这样就不会存在数据溢出的问题了
  }
}

 

大的数据类型塞到小类型里面:

public class Intyichu{
  public static void main(String args[]){
    //任何的整数其默认类型都是int,但是该数据已经超过了int可以保存的数据范围
    //那么现在就需要将这个数据明确的表示这是个long型的
    long num = 2147483648L ; //'L'或'l'都可以
    //在强制的时候设置其目标类型,这种操作都有可能会丢失其精度
    int result = (int)num;//大的类型变为小的类型,必须强制
    System.out.println(result);//-2147483648
  }
}
  • 范围小的数据类型可以自动变为大的数据类型型
  • 数据范围大的数据类型只有强制转换才可以转换为小的数据类型
  • 尽量不要使用以上操作
重要说明:之前说过所有数据类型都有一个默认值,但是其在主程序中无效
错误示范:
public class Intyichu{
  public static void main(String args[]){
    int num ;//定义一个num变量
    System.out.println(num);//错误,可能尚未初始化
  }
}

两种解决方案:

  • 在变量输出前为变量设置内容
public class Intyichu{
  public static void main(String args[]){
    int num ;//定义一个num变量
    num = 10;//在输出前为其设置内容
    System.out.println(num);//错误,可能尚未初始化
  }
}

这种方式在老版本中也会出错.

  • 通用做法
public class Intyichu{
  public static void main(String args[]){
    int num = 10;//在输出前为其设置内容
    System.out.println(num);//错误,可能尚未初始化
  }
}

说到整型,不得不去考率byte数据类型,他的保存范围是:-128~127之间。

范例:声明byte类型

public class Intyichu{
  public static void main(String args[]){
    //10是int,int的范围要大于byte范围,那么理论上需要强制转换
    //可是没有转换,因为其数据量没有超出byte范围,符合byte要求
    byte data = 10 ;//10是int类型在byte范围内
    System.out.println(data) ;
  }
}

如果现在你为byte赋值的内容大于byte的范围,这个时候就需要强制转换了。

public class Intyichu{
  public static void main(String args[]){
    byte data = (int)128 ;
    System.out.println(data) ;//-128
  }
}

同时需要注意的是,如果要将int常量直接赋值给byte变量,那么要求只能够是常量,而不能是int变量。

错误实例:

public class Intyichu{
  public static void main(String args[]){
    Int num = 10;
    byte result = num;
    System.out.println(result);
  }
}

正确实例:

public class Intyichu{
  public static void main(String args[]){
    Int num = 10;
    byte result =(byte) num;
    System.out.println(result);
  }
}

在开发中,byte和int经常会一起出现。

 
[展开全文]

java数据类型划分以及数据类型操作

1. java的数据类型划分

两大类:

  • 基本数据类型:
  • 引用数据类型:
1. 基本数据类型:
         数值型: 表示整数或小数;
                整形:byte,short,int,long; 默认值:0;
                浮点型:float,double;默认值:0.0;
         字符型:char;默认值:'\u0000'
         布尔型:boolean;默认值:false
2. 引用类型:数组,类,接口;默认值:null
 
选用原则:
  • 表示整数:int,描述小数就是用double.
  • long这种数据类型一般会用来描述日期时间,内春大小或文件大小(字节);
  • 如果需要进行编码转换或者进行二进制数据传输,使用byte(-127-128)
  • char一般在描述中文的时候使用到(基本上都会忽略).
  • boolean在描述程序逻辑的使用.
 
 
 
[展开全文]

标识符与关键字

程序是一种逻辑的集合,所以每一个逻辑题上都应该有一个自己的标记,例如:在程序之中定义变量.定义常量,变量,类名,方法名称等都有自己的一个命名要求:在java中标识符的命名要求如下:由字母,数字,_,$所组成,其中不能以数字开头,不能使用java中的保留字(关键字)

建议:

  • 标识符采用有意义的简单命名,例如: student_name;
  • $不要在你的代码中出现,因为其有特殊含义
关键字说明:
  • java有两个未使用到的关键字:goto,const
  • java中的有特殊含义的单词(不算关键字):null,false,true;
  • JDK1.4之后追加了assert关键字
  • JDK1.5之后追加了enum关键字
[展开全文]

 程序注释

一般写的程序代码之中都要求加上注释,这样可以方便的进行程序的阅读。

在程序中支持三类注释:

  • 单行注释:// 注释内容
  • 多行注释:/*注释内容*/
  • 文档注释:/** 文档注释标记 */
注释与代码最大的区别是所有的注释内容不会被程序编译器所编译.
这个注释直接和你以后的项目文档有直接联系.
 

 

[展开全文]
里程碑 · 2017-12-02 · Java程序基本概念(注释) 1

CLASSPATH环境属性

CLASSPATH指的是类的加载路径。

如果一个Hello.class想要执行,那么命令行就必须在Hello.class所在的目录,否则就无法执行。

那么如何做到即使不在Hello.class所在的目录,也能执行这个文件呢?

那么这个时候就必须用我们的CLASSPATH来进行控制,所以执行如下命令:

  • SET CLASSPATH=d:\mydemo

结论:java解释一个程序类的时候,一定首先取得classpath设置的路径,而后才开始类的加载操作。

需要注意的是,如果你现在的classpath设置的目录很多,那么对于程序的解释执行会非常不方便,所以最好采用的是默认机制:从当前所在的路径中进行类的加载,那么我们可以将classpath的内容设置为‘.’

  • SET CLASSPATH=.
所以不建议大家去改变CLASSPATH的配置,当然我们可以为我们的项目去添加一个环境属性。
 
在环境变量中添加。
[展开全文]
里程碑 · 2017-12-02 · CLASSPATH环境属性 1

第一个Java程序:所有程序文件必须以.java文件名后缀。

public class Hello {
  public static void main (String argsp[]) {
    System.out.println("hello world!");
  }
}

 

执行步骤:

  1.  编译源代码文件,将其形成*.class文件。执行命令行javac Hello.java就会生成*.class文件。
  2. 解释java文件:java Hello
注意:其中的类名必须与文件名保持一致,不然就会报“类HelloWorld是公共的,应在名为HelloWorld.java的文件中声明”的编译错误。
 

1. 程序类的定义:类是java中的基本单位,所有的java程序都是以类的形式存在的,在java中对于类的定义有两类语法:

  • public class 类名称 {}:类名必须和文件名保持一致
  • class 类名称 {}:文件名称可以与类名称不同,生成的字节码文件就是类名称.class,在一个*.java文件里面可以使用class定义多个类,并且在编译之后会形成不同的*.class文件。
类名的首字母一般大写
在java的学习中可能会在一个*.java文件中定义多个类,主要是方便浏览,但是在实际的开发当中,几乎每一个java文件只会定义一个类。
 
2.主方法:主方法是一切的起点,也就是说所有的程序都要通过主方法开始执行;而主方法的定义如下:
public static void main (String argsp[]) {
    System.out.println("hello world!");
  }

主方法中编写的代码才是你整个程序该执行的程序逻辑;

以后我们把主方法所在的类都称为主类,而主类一般都是用public class 声明;

3. 信息输出:指的是在 屏幕上进行信息的打印操作,而信息输出有以下两类语法:

  • 输出后换行:System.out.println(内容);
  • 输出后不换行:System.out.print(内容);
初期写代码先用记事本完成。
 
 
[展开全文]
里程碑 · 2017-12-02 · 第一个Java程序 1

Java开发先需要一个JDK的开发包。

JDK安装之前,把防火墙都关掉,否则会产生可怕的后果。

只安装jre就会导致javac找不到该命令。

java环境变量配置:

  • 在path中添加java/bin所在的绝对路径

新的环境属性必须在重启之后才会生效。

[展开全文]
里程碑 · 2017-12-02 · JDK的安装与配置 1

授课教师

阿里云开发者社区全面升级
一站式体验,助力云上开发!
进入新社区

相关课程

查看更多 >

本课程相关云产品