11-java基础

1、java语言的特点

    简单、面向对象、分布式、健壮、安全、中性架构跨平台、超强可移植性、高性能、多线程。

java是编译性语言,python是解释性语言,一般来说解释性语言比编译性语言慢。

 

2、标识符规则

1)由数字、字母、下划线、$组成,且不能以数字开头

2)大小写敏感

3)不能与java关键字冲突

 

3、java注释

1)单行注释,//

2)多行注释,以/*开头,以*/结尾

3)文档注释,/**开头,*/结尾

 

4、导包

1)不需要导包的情况如下,其他情况都需要导包:

①同一个包下面的不需要导包

②java.lang包下面的类都不需要导

2)导包规则:

①导包语句必须在packet和class中间

②导包语句:import java.util.Date;

 

5、变量

public class VarDemo {
    public static void main(String[] args) {
        int a ; //变量的声明
        
a = 3 ; //变量的赋值
        
int b = 4; //变量的声明同时进行初始化
        //变量的第一次赋值称为初始化,其他的都叫赋值
        //声明在方法中的变量叫:局部变量
        //方法的参数也是局部变量
        //局部变量在使用必须进行初始化
        //
    
}
}

 

6、数据类型

1)基本类型(8种)

boolean、char、byte(8位,有符号,-128到127)、short(16位)、int(32位)、double(64位)long(64位)、float(32位)

2)引用类型

public class TypeDemo {
    public static void main(String[] args) {
        double d =2.6;
        d = d-2.0;
        //浮点型的运算是不精确的,不要用这个结果来判断是否相等
        
System.out.println(d);  //0.6000000000000001
        
System.out.println(d == 0.6);  //false

        //强制转换
        //1 小范围到大范围的可以自动转换
        //byte<short<int<long<floate<double
        
int a =3;
        long b = a;
        //2 整型到浮点型的可以自动转换
        
double c = a;
        //3 在范围内的字面量可以类型转换
        //整数的默认类型是int,小数的默认类型是double
        //字面量,固定不变的量,可以看做是常量
        
byte bb = 1;
        //byte bb2 = 128;-----128超过了byte范围,不能转,报错
        
byte bb3 = (byte)128;//强制转换后是-128,byte范围在-128--127之间

        
double d1 = 3.4;
        double d2 = 3.8;
        int d3 = (int)d1;   //d3=3
        
int d4 = (int)d2;   //d4=3
    
}
}

 

7、运算符

public class YunSuanFu {
    public static void main(String[] args) {
        //java中所有的关键字都小写
        //+:可以连接字符串,任何类型和字符串相加都将变成字符串类型
        
String str = "aaa"+"bbb"+123;
        System.out.println(str); //aaabbb123

        //         5/2=2     5%2=1
        //         0%1=0,    0对任何数取余都是0
        //         m%n       [0~n-1]即[0,n)
        //短路与第一个表达式是false,后面表达式就不看了,结果false
        //短路或,第一个表达式是true,后面表达式就不看了,结果true
        // &  | 逻辑与和逻辑或
        //a++ ;==> a= a+1;
        
int x = 3>4?5:6;   //3目运算符,条件运算符,结果6
    
}
}

 

8、跳转

1)if语句

public class IfDemo {
    public static void main(String[] args) {
        //分支语句if必须有,else if可以有0到n个,else有0或1个
        //if只会走一条分支
        
int x = 10;
        if (x < 8) {
            System.out.println("a");
        } else if (x < 6) {
            System.out.println("b");
        }
    }
}

 

2)break、continue、return

continue :终止本次循环,继续下次循环

break:跳出最内侧循环

return:直接跳出方法体

 

3)实例

●给5个整数,输出最小数

public class IfDemo {
    public static void main(String[] args) {
        int a = 83;
        int b = 4;
        int c = 55;
        int d = 96;
        int e = 22;
        int min = a;
        if (min > b) min = b;
        if (min > c) min = c;
        if (min > d) min = d;
        if (min > e) min = e;
        System.out.println(min);
    }
}

 

●打印99乘法表

public class IfDemo {
    public static void main(String[] args) {
        //99乘法表
        //外层控制行
        
for (int i = 1; i < 10; i++) {
            //内层控制列
            
for (int j = 1; j < i + 1; j++) {
                System.out.print(j + "*" + i + "=" + i * j + "\t");
            }
            System.out.println("");
        }
    }
}

 

●求1-100间质素

public class IfDemo {
    public static void main(String[] args) {
        //1-100质素
        
for(int i=2;i<=100;i++){
            boolean flag=true;//假设所有的数字都是素数
            
for (int j=2;j<i;j++)
            {
                if (i%j == 0) {
                    flag = false;
                    break;
                }
            }
            if (flag == true) {
                System.out.println(i);
            }
        }
    }
}

练习:完成下面程序,是程序运行结果分别输出2个、7个、13个hello java

public class LogicJump {
    //结果输出2个hello java
    
public static void main(String[] args) {
        for (int i=1;i<=10;i++){
            if(i%3 == 0)
            {
                            }
            System.out.println("hello java");
        }
    }
}

依次在if语句中补充break、continue、System.out.println("hello java");

9、数组

import java.util.Arrays;
public class ArrayDemo {
    public static void main(String[] args) {
        //数组只能存相同类型的数据、数组大小固定
        //1 数组声明
        
int[] arr;

        //2 数组的初始化
        //1)静态初始化
        
int[] arr1 = {1,2,3,4};
        //2)动态初始化
        
int[] arr2 = new int[4];//元素默认值是0000---
        //整数类型(byte、short、int、long)      默认值都是0
        //浮点类型(float、double)               默认值0.0
        //boolean                                默认false
        //引用类型                                默认null
        //char                                   默认'\u0000'
        //数组、字符串                            null
        //java中只有8中基本类型,其他都是引用类型

        //3 数组元素的初始化
        
int b = arr1[2];

        //4 数组的长度
        
int c = arr1.length;

        //5 数组元素的初始化
        
arr2[3] = 3;
        for (int i=0;i<arr2.length;i++)
        {
            arr2[i] = i+5;
        }
        //6打印数组
        // 方法1
        
for (int i=0;i<arr2.length;i++){
            System.out.println(arr2[i]);
        }
        //方法2,借助java.util.Arrays包中的Arrays类
        
System.out.println(Arrays.toString(arr2));
    }
}

 

10、随机数

import java.util.Random;
public class RandomDemo {
    public static void main(String[] args) {
        //创建了一个Random对象
        //int a = 3;
        
Random ran = new Random();
        //从0-9之间随机取出一个数    ran.nextInt(n),表示0到n-1间随机去一个数
        
int x = ran.nextInt(10);
    }
}

练习:实现双色球:红球33选6,篮球13选1

import java.util.Arrays;
import java.util.Random;

public class TwoBall {
    public static void main(String[] args) {
        Random ran = new Random();
        int blueBall = ran.nextInt(17);
        System.out.println("篮球"+blueBall);

        int[] redBall = new int[6];
        for (int i=0;i<redBall.length;i++)
        {
            redBall[i] = ran.nextInt(33+1);

            //去重
            
for (int j =0;j<i;j++){
                if (redBall[j] == redBall[i]){
                    i = i-1;
                    break;
                }
            }
        }
        System.out.println("红球"+Arrays.toString(redBall));
    }
}

 

11、字符串常用方法

import java.util.Arrays;
public class StrDemo {
    public static void main(String[] args) {
        String str = "123456789";
        //str.lastIndexOf("56");  最后一次出现的位置
        //从字符串str中查找字符串34第一次出现的位置,返回的是下标,找不到返回-1
        
int n = str.indexOf("34");
        System.out.println(n);

        //截取字符串str,从下标为1开始到最后,包括下标1
        
String s2 = str.substring(1);
        System.out.println(s2);
        //截取字符串str,从下标为1开始到下标7,包括下标1,不包括下标7,前闭后开
        
String s3 = str.substring(1,7);
        System.out.println(s3);

        //判断字符串str是否以34开头   endWith
        
boolean b1 = str.startsWith("34");
        System.out.println(b1);

        //去出字符串上两端的空白
        
String s33 = "3 4 5 \n";
        String s4 = s33.trim();
        System.out.println(s4);

        //字符串比较
        
System.out.println(str.equals("666"));

        //根据字符串1 拆分字符串s5 ,拆分结果以数组返回
        
String s5 = "a1b1c1d1f218899qq";
        String[] ss = s5.split("1");
        String[] sss = s5.split("\\d");
        System.out.println(Arrays.toString(ss));
        System.out.println(Arrays.toString(sss));
    }
}

 

12、面向对象

//类的声明
public class Student {

    //成员变量
    //成员变量在类中,方法外
    //成员变量可以在类中任意地方访问
    //成员变量会有默认值
    
String id;
    String name;
    int age;
    
    
    //每个类都必须有构造器(也叫构造方法),如果没有为这个类写构造器,那么java编译器会给这个类提供一个默认的构造器
    // (public Student(){} 公开空实现的构造器),如果为这个类写了构造器,那么java编译器不再提供默认构造器
    //1 构造器名字必须和类型相同
    //2 构造器没有返回类型
    //3 new创建对象时会创建构造器
    
public Student(){

    }
    public Student(String str){
        name = str;
    }

    //[修饰符] 返回类型 方法名(参数类型 参数名,参数类型 参数值...)
    //方法没有返回值用void
    //方法中不能嵌套方法
    
public void study(String course){
        System.out.println("爱学习"+course);
    }

    public int add(int x,int y){
        int z = x+y;
        return z;
    }
}

 

public class TestSudent {
    public static void main(String[] args) {
        Student s1 = new Student();
        s1.name = "张三";
        s1.age = 18;
        System.out.println(s1.name + "--" + s1.age);
        s1.study("zhongwen");
    }
}

 

13、this

this代表当前对象本身,类似代词中的我

常用来区别实例变量(即成员变量)和局部变量

 

练习:写一个Person类,包括以下属性:String name;int age;char gender;Person partner,为Person类写一个marry(Person p)方法,代表当前对象和p结婚,若可以结婚则输出共和信息,否则输出不能结婚原因。要求另一个类中写一个主方法来测试上面程序。以下情况不能结婚:(1)同性、(2)未达到法定年龄,男<22,女<20、(3)某一方已婚

public class Person {
    String name;
    int age;
    char gender;
    Person partner;

    public Person(String name, int age, char gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    public void marry(Person p){
        if (p.gender == this.gender){
            System.out.println("万年基友,搞啥呢!");
            return;
        }
        if((p.gender == 'm' && p.age <22) || (p.gender == 'f' && p.age <20)){
            System.out.println("老牛吃嫩草");
            return;
        }

        if((this.gender == 'm' && this.age <22) || (this.gender == 'f' && this.age <20)){
            System.out.println("小学生,凑什么热闹!");
            return;
        }

        if(this.partner !=null){
            System.out.println("找小三的下场可惨了");
            return;
        }

        if(p.partner !=null){
            System.out.println("你成了别人的小三");
            return;
        }

        System.out.println("恭喜"+p.name + "和"+this.name+"发糖!");
        this.partner=p;
        p.partner=this;
    }
}

更多内容欢迎关注微信公众号查看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值