Java的语言基础

目录

开发环境

名词

开发工具

文档的注释

变量

八大基本数据类型

数据类型的转换

运算符号 

分支结构

循环结构

跳出循环

数组

方法函数过程


开发环境

  • 编译器

编译.java源文件 生成.class字节码文件

  • 运行期

JVM运行,class源文件


名词

  • JVM   java的虚拟机 加载并运行.class字节码文件
  • JRE   包含了JVM 和系统类库(小零件)是java最小运行环境
  • JDK  包含了JRE 和 开发的命令工具 是开发java的最小环境

开发工具

  • idea

JetBrains公司的,分为社区版(免费的)和终级版(收费的)


文档的注释

//  单行注释
/*    多行注释       */ 
/**   文本注释       */ 

运行时 不被执行


变量

int a; //声明一个整型的变量,名为a
int b,c,d; //声明三个整型的变量,名为b,c,d
//int a; //编译错误,变量不能同名
  • 命名规则
  1. 只能是数字 _&和字母 并且不能用数字开头
  2. 可以始终中文但是不建议 不能使用拼音
  3. 建议使用英文的"见名知意"
  4. 建议使用小驼峰法则(第一个单词字母小写其余大写)

八大基本数据类型

  • byte        短整数型  一个字节 范围 -128~127
  • short       短整形型   两个字节范围-32768~32767 
  • int            整形          四个字节  默认数据类型  范围-2^31 -  2^31-1
//1)int:整型,4个字节,-21个多亿到21个多亿
int a = 25; //25称为整数直接量,默认int类型
//int b = 10000000000; //编译错误,100亿默认为int类型,但超出int范围了
//int c = 3.14; //编译错误,整型变量中只能装整数
System.out.println(5/2); //2
System.out.println(2/5); //0
System.out.println(5/2.0); //2.5
int d = 2147483647; //int的最大值
d = d+1;
System.out.println(d); //-2147483648(int最小值),发生溢出了,溢出是需要避免的

  • long         长整形      八个字节   范围-2^61 -  2^61-1
//2)long:长整型,8个字节,很大很大很大
long a = 25L; //25L为长整型直接量
//long b = 10000000000; //编译错误,100亿默认为int类型,但超出int范围了
long c = 10000000000L; //100L为长整型直接量
//long d = 3.14; //编译错误,长整型变量只能装整数

//运算时若有可能溢出,建议在第1个数字后加L
long e = 1000000000*2*10L;
System.out.println(e); //200亿
long f = 1000000000*3*10L;
System.out.println(f); //不是300亿
long g = 1000000000L*3*10;
System.out.println(g); //300亿
  • flort          单浮点数   四个字节 不能表示精确数据 运算数有误差
  • duoble     双浮点数   八个字节 
//3)double:浮点型,8个字节,很大很大很大
double a = 3.14; //3.14为浮点数直接量,默认double型
float b = 3.14F; //3.14F为float型直接量
double c = 1234000000000000000000000000000000.0;
System.out.println(c); //1.234E33,科学计数法表示,相当于1.234*(10的33次幂)

double d=3.0,e=2.9;
System.out.println(d-e); //0.10000000000000009,有可能会发生舍入误差,精确场合不能使用
  • char         字节型 采用Unicden编码格式 一个字节 范围 65535  A-65 a-97 0-48
//4)boolean:布尔型,1个字节
boolean a = true;  //true为布尔型直接量-----真
boolean b = false; //false为布尔型直接量----假
//boolean c = 250; //编译错误,布尔型只能赋值为true或false
  • boolean   布尔型  一个字节 存储 true false
//5)char:字符型,2个字节
char c1 = '女'; //字符女
char c2 = 'f';  //字符f
char c3 = '6';  //字符6
char c4 = ' ';  //空格符
//char c5 = 女; //编译错误,字符型直接量必须放在单引号中
//char c6 = ''; //编译错误,必须有字符
//char c7 = '女性'; //编译错误,只能有1个字符

char c8 = 65; //0到65535之间
System.out.println(c8); //println输出时会依据c8的数据类型显示
//若c8为char型,则显示字符
//若c8为int型,则显示数字
char c9 = '\\';
System.out.println(c9); //\

数据类型的转换

  • byte----short( char----)----int----long----float----double ​
  •  从大到小 自动转(隐式转换)

    从小到大强转 在数据类型前面加(数据类型)  强转时 发生精度丢失  预防溢出问题


int a = 5;
long b = a; //自动类型转换
int c = (int)b; //强制类型转换

long d = 5;   //自动类型转换
double e = 5; //自动类型转换

long f = 10000000000L;
int g = (int)f; //强制类型转换
System.out.println(g); //1410065408,强转有可能发生溢出
double h = 25.987;
int i = (int)h; //强制类型转换
System.out.println(i); //25,强转有可能丢失精度
  • 两点规则

    整数直接量可以直接赋值给byte,short,char,但不能超出范围
    byte,short,char型数据参与运算时,系统会将其自动转换为int

byte b1 = 5; //byte的范围为-128到127之间
byte b2 = 6;
byte b3 = (byte)(b1+b2);

System.out.println(2+2);     //4
System.out.println(2+'2');   //52,2加上'2'的码50
System.out.println('2'+'2'); //100,'2'的码50,加上'2'的码50

运算符号 

  • 算术:+、-、*、/、%、++、--
//%的演示
System.out.println(8%2); //0,商4余0----整除
System.out.println(5%2); //1,商2余1
System.out.println(2%8); //2,商0余2

//++单独使用:
int a=5,b=5;
a++; //相当于a=a+1
++b; //相当于b=b+1
System.out.println(a); //6
System.out.println(b); //6

//++被使用:
int a=5,b=5;
int c = a++; //1)保存a++的值5  2)a自增1变为6  3)将第1步保存的值5赋值给c--底层运算过程
//---粗暴记法:a++的值为5,c就是5
int d = ++b; //1)保存++b的值6  2)b自增1变为6  3)将第1步保存的值6赋值给d--底层运算过程
//---粗暴记法:++b的值为6,d就是6
System.out.println(a); //6
System.out.println(b); //6
System.out.println(c); //5
System.out.println(d); //6

//--单独使用:
int a=5,b=5;
a--; //相当于a=a-1
--b; //相当于b=b-1
System.out.println(a); //4
System.out.println(b); //4

//--被使用:
int a=5,b=5;
int c = a--; //a--的值为5,所以c的值为5
int d = --b; //--b的值为4,所以d的值为4
System.out.println(a); //4
System.out.println(b); //4
System.out.println(c); //5
System.out.println(d); //4

  • 关系:>、<、>=、<=、==、!=
int a=5,b=10,c=5;
boolean b1 = a>b;
System.out.println(b1);   //false
System.out.println(c<b);  //true
System.out.println(a>=c); //true
System.out.println(a<=b); //true
System.out.println(a==c); //true
System.out.println(a!=c); //false

System.out.println(a+c>b);  //false
System.out.println(a%2==0); //false
System.out.println(c++>5);  //false-------c自增1变为6
System.out.println(c++>5);  //true--------c自增1变为7
  • 逻辑:&&、||、!
int a=5,b=10,c=5;
//&&的演示:
boolean b1 = b>=a && b<c;
System.out.println(b1);          //true&&false=false
System.out.println(b<=c && b>a); //false&&true=false
System.out.println(a==b && c>b); //false&&false=false
System.out.println(b!=c && a<b); //true&&true=true
int age = 25;
System.out.println(age>=18 && age<=50); //看age是否在18到50之间

//||的演示:
System.out.println(b>=a || b<c); //true||false=true
System.out.println(b<=c || b>a); //false||true=true
System.out.println(b!=c || a<b); //true||true=true
System.out.println(a==b || c>b); //false||false=false
int score = 89;
System.out.println(score<0 || score>100); //看score是否不合法

//!的演示
boolean b2 = !(a<b);
System.out.println(b2);     //!true=false
System.out.println(!(a>b)); //!false=true

//短路的演示
int a=5,b=10,c=5;
boolean b3 = a>b && c++>2;
System.out.println(b3); //false
System.out.println(c);  //5,发生短路了

boolean b4 = a<b || c++>2;
System.out.println(b4); //true
System.out.println(c);  //5,发生短路了
  • 赋值:=、+=、-=、*=、/=、%=
int a = 5;
a += 10; //相当于a=(int)(a+10)
System.out.println(a); //15
a *= 2; //相当于a=(int)(a*2)
System.out.println(a); //30
a /= 6; //相当于a=(int)(a/6)
System.out.println(a); //5

//小面试题:
short s = 5;
//s = s+10; //编译错误,需强转: s=(short)(s+10);
s += 10; //相当于s=(short)(s+10)
  • 字符串连接:+
//字符串拼接演示
int age = 38;
System.out.println("age="); //age=
System.out.println(age);    //38
System.out.println("age="+age); //age=38
System.out.println("我的年龄是"+age); //我的年龄是38
System.out.println("我今年"+age+"岁了"); //我今年38岁了

String name = "WKJ";
System.out.println("name="+name); //name=WKJ
System.out.println("大家好,我叫"+name); //大家好,我叫WKJ
System.out.println("大家好,我叫"+name+",今年"+age+"岁了"); //大家好,我叫WKJ,今年38岁了

//同化作用演示
System.out.println(10+20+30+""); //60---------String
System.out.println(10+20+""+30); //3030-------String
System.out.println(""+10+20+30); //102030-----String
  • 条件:boolean?数1:数2
int num = 5;
int flag = num>0?1:-1;
System.out.println(flag); //1

int a=8,b=55;
int max = a>b?a:b;
System.out.println("max="+max);

分支结构

if(){}else{} --------多条路结构

//1)偶数的判断:
int num = 5;  //带数(6,5)
if(num%2==0){
    System.out.println(num+"是偶数");
}
System.out.println("继续执行...");

//2)满500打8折:
double price = 300.0; //消费金额  带数(600.0,300.0)
if(price>=500){ //满500
    price *= 0.8; //打8折
}
System.out.println("最终结算金额为:"+price);

//3)判断年龄是否在18到50之间,若满足则输出:"满足条件"
int age = 88;  //带数(25,5,88)
if(age>=18 && age<=50){
    System.out.println("年龄满足条件");
}
System.out.println("继续执行...");

switch-case-------结构简单 只能判断整数相等---  必须搭配   break:跳出switch 

public class CommandBySwitch {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("请选择功能: 1.取款  2.存款  3.查询余额  0.退卡");
        int command = scan.nextInt();

        switch(command){
            case 1:
                System.out.println("取款操作...");
                break;
            case 2:
                System.out.println("存款操作...");
                break;
            case 3:
                System.out.println("查询余额操作...");
                break;
            case 0:
                System.out.println("退卡操作...");
                break;
            default:
                System.out.println("输入错误");
        }
    }
}

循环结构

while(boolean){}------结果为true则执行条件

//1)输出5次"行动是成功的阶梯":
int times = 0;  //1)循环变量的初始化
while(times<5){ //2)循环的条件
    System.out.println("行动是成功的阶梯");
    times++;    //3)循环变量的改变
}
System.out.println("继续执行...");

/*
  执行过程:----带数
                times=0
    true  输出  times=1
    true  输出  times=2
    true  输出  times=3
    true  输出  times=4
    true  输出  times=5
    false while循环结束
    输出继续执行...
 */

//2)输出9的乘法表:
int num = 1;     //3*9=27
while(num<=9){
    System.out.println(num+"*9="+num*9);
    num++;  //num+=2;
}
System.out.println("继续执行...");

do{}while()-------------先执行一次语句块再去判断

public class Guessing {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int num = (int)(Math.random()*1000+1); //1到1000之内的随机数
        System.out.println(num); //作弊

        //假设num=250
        //300(大),200(小),250(对)
        int guess;
        do{
            System.out.println("猜吧!");
            guess = scan.nextInt(); //1+3
            if(guess>num){
                System.out.println("太大了");
            }else if(guess<num){
                System.out.println("太小了");
            }else{
                System.out.println("恭喜你猜对了");
            }
        }while(guess!=num); //2
    }
}

for(){}------------------给定循环条件再去判断

//for循环中的循环变量i,作用域仅在当前for中
for(int i=1;i<=9;i++){
    System.out.println(i+"*9="+i*9);
}
for(int i=1;i<=9;i+=2){
    System.out.println(i+"*9="+i*9);
}
for(int i=9;i>=1;i--){
    System.out.println(i+"*9="+i*9);
}

for(int times=0;times<5;times++){
    System.out.println("行动是成功的阶梯");
}
System.out.println("继续执行...");
/*
执行过程:
times=0  true  输出
    times=1  true  输出
    times=2  true  输出
    times=3  true  输出
    times=4  true  输出
    times=5  false for循环结束
    输出继续执行...
*/

//for的特殊格式:----------了解
int i=1;
for(;i<=9;i++){
    System.out.println(i+"*9="+i*9);
}
for(int i=1;i<=9;){
    System.out.println(i+"*9="+i*9);
    i++;
}
for(;;){ //没有条件的循环就是一个死循环
    System.out.println("我要学习...");
}

for(int i=1,j=5;i<=5;i+=2,j-=2){
}
/*
  i=1,j=5  true
  i=3,j=3  true
  i=5,j=1  true
  i=7,j=-1 false
 */

若循环条件跟次数有关 用for 

   若无关 第一要素跟第三要素不相同用 while若不相同用do while


跳出循环

break    跳出循环  前面加关键字 能指定跳出位置

for(int i=1;i<=9;i++){
    if(i==4){ //在某种特定条件下,提前结束循环
        break;
    }
    System.out.println(i+"*9="+i*9);
}
/* 
  i=1  true  1*9=9
  i=2  true  2*9=18
  i=3  true  3*9=27
  i=4  true
*/        

continue 跳过循环体中剩余语句而进入下一次循环

//输出9的乘法表,只要不能被3整除的
for(int i=1;i<=9;i++){
    if(i%3!=0){
        System.out.println(i+"*9="+i*9);
    }
}


//输出9的乘法表,跳过能被3整除的
for(int i=1;i<=9;i++){
    if(i%3==0){
        continue; //跳过循环体中剩余语句而进入下一次循环
    }
    System.out.println(i+"*9="+i*9);
}
/*
    i=1  1*9=9
    i=2  2*9=18
    i=3
    i=4  4*9=36
    i=5  5*9=45
    i=6
    i=7  7*9=63
    i=8  8*9=72
    i=9
    i=10
*/

数组

  • 是一种主句引用的集合 是一组相同的数据
  • 数组名.legth是用来访问数组的长度
int[] arr = new int[3];
System.out.println(arr.length); //3

  • 访问数组的元素同过元素的下标来进行访问
  • 数组的赋值
  1.  System.arraycopy(a,2,b,3,2);
//7)数组的复制:
int[] a = {10,20,30,40,50};
int[] b = new int[6]; //0,0,0,0,0,0
//a:源数组
//1:源数组的起始下标
//b:目标数组
//0:目标数组的起始下标
//4:要复制的元素个数
System.arraycopy(a,1,b,0,4); //灵活性好
for(int i=0;i<b.length;i++){
    System.out.println(b[i]);
}

  1. a=Arrays.copyOf(a,3);
//常规复制
int[] a = {10,20,30,40,50};
//a:源数组
//b:目标数组
//6:目标数组的长度(元素个数)
//---若目标数组长度>源数组长度,则末尾补默认值
//---若目标数组长度<源数组长度,则将末尾的截掉
int[] b = Arrays.copyOf(a,6); //灵活性差
for(int i=0;i<b.length;i++){
    System.out.println(b[i]);
}

//数组的扩容
int[] a = {10,20,30,40,50};
//数组扩容(创建了一个更大的新的数组,并将源数组数据复制进去了)
a = Arrays.copyOf(a,a.length+1);
for(int i=0;i<a.length;i++){
    System.out.println(a[i]);
}
  • 数组的排序
  1. Arrays.sort(arr);
//8)数组的排序:
int[] arr = new int[10];
for(int i=0;i<arr.length;i++){
    arr[i] = (int)(Math.random()*100);
    System.out.println(arr[i]);
}

Arrays.sort(arr); //对arr进行升序排列

System.out.println("数组排序后的数据:");
for(int i=0;i<arr.length;i++){
    System.out.println(arr[i]);
}

System.out.println("倒序输出:");
for(int i=arr.length-1;i>=0;i--){
    System.out.println(arr[i]);
}
  1. 倒序
    for (int i=arr.length-1;i>=0;i--){
        System.out.print(arr[i]+"\t");
    }


方法函数过程

  • 封装一段特定的业务逻辑功能
  • 尽可能的独立,一个方法只干一件事
  • 方法可以被反复多次调用
  • 减少代码重复,有利于代码复用,有利于代码维护
  • 定义方法:五要素

    ​ 修饰词 返回值类型 方法名(参数列表) {

    ​ 方法体--------------具体的业务逻辑功能实现

    ​ }

//无参无返回值
public static void say(){
    System.out.println("大家好,我叫WKJ,今年38岁了");
}
//有参无返回值
public static void sayHi(String name){ //---------形参
    System.out.println("大家好,我叫"+name+",今年38岁了");
}
//有参无返回值
public static void sayHello(String name,int age){
    if(age>=35){ //在某种特定条件下,提前结束方法
        return; //结束方法
    }
    System.out.println("大家好,我叫"+name+",今年"+age+"岁了");
}

//无参有返回值
public static double getNum(){
    //在有返回值的方法中:
    //--必须得通过return来返回一个值,并且这个值的类型必须与返回值类型匹配
    //return "abc"; //编译错误,返回的值必须与返回值类型匹配
    return 8.88; //1)结束方法的执行  2)返回一个结果给调用方
}

//有参有返回值
public static int plus(int num1,int num2){
    int num = num1+num2;
    return num; //返回的是num里面的那个数
    //return num1+num2; //返回的是num1与num2的和
}
//获取指定整型数组元素的最小值
public static int getMinOfArray(int[] arr){
    int min = arr[0]; //假设第1个元素为最小值
    for(int i=1;i<arr.length;i++){
        if(arr[i]<min){
            min = arr[i];
        }
    }
    return min;
}

调用方法:

  • 无返回值:方法名(有参传参);
  • 有返回值:数据类型 变量 = 方法名(有参传参);
  • //say();
    
    //sayHi(); //编译错误,有参则必须传参
    //sayHi(250); //编译错误,参数类型必须匹配
    sayHi("zhangsan"); //String name="zhangsan" //-------实参
    sayHi("lisi"); //String name="lisi" //---------------实参
    sayHi("wangwu"); //String name="wangwu" //-----------实参
    
    sayHello("zhangsan",25); //实参
    sayHello("WKJ",38); //实参
    
    double a = getNum(); //getNum()的值就是8.88
    System.out.println(a); //8.88----模拟对返回值的后续操作
    
    int b = plus(5,6);
    System.out.println(b); //11----模拟对返回值的后续操作
    
    int m=5,n=6;
    int c = plus(m,n); //传递的是m和n里面的那个数
    System.out.println(c); //11----模拟对返回值的后续操作
    
    int[] arr = {13,45,1,35};
    int min = getMinOfArray(arr);
    System.out.println(min); //1----模拟对返回值的后续操作
    
    int[] a = new int[10];
    for(int i=0;i<a.length;i++){
        a[i] = (int)(Math.random()*100);
    }
    int b = getMinOfArray(a);
    System.out.println(b);
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值