Java(上)

本文详细介绍了Java编程的基础知识,包括程序运行机制、命名规则、标识符、关键字、变量、注释、数据类型、运算符、类型转换、键盘输入、流程控制语句、方法重载、面向对象的封装、继承、多态等概念。此外,还讨论了构造方法、内存管理、this关键字、静态成员、类的加载与对象创建,以及JDK的主要包和类管理机制。
摘要由CSDN通过智能技术生成

java程序运行机制

  1. 利用文本编辑器编写java源程序(.java)
  2. javac Welcom.java 利用编译器将源程序编译成字节码文件(.class)
  3. java Welcome 利用虚拟机解释执行

Welcome.java

//类名和文件名保持一致
public class Welcome{
   
	//定义main方法
	public static void main(String[] args){
   
		System.out.println("Hello World");
	}
}

常用dos命令

cd ..
dir 常看目录文件 == ls
cls 清空屏幕

起名规则:见名知意

标识符

  1. 标识符必须以 字母、下划线 _ 、美元符 $ 开头
  2. 标识符其他部分可以是 字母、下划线、数字、美元符$ 的任意组合
  3. 标识符大小写敏感
  4. 标识符不可以是java的关键字

标识符使用规范

  1. 表示类名:每个单词的首字母大写:如Man、GoodMan
  2. 表示方法和变量:第一个单词小写,从第二个单词开始首字母大写 — “驼峰原则”,如eat(),eatFood()
  3. java采用Unicode字符集

java关键字

在这里插入图片描述

变量

本质:可操作的存储空间,空间位置确定,里面放的值可变,通过变量名访问对应的存储空间,从而操纵这个存储空间的值。

注释

** idea的注释快捷键:ctrl+/ **

//这是单行注释

/*
这是
多行
注释
*/

/**
*这是文档注释,描述类作用。
*后期通过开发环境生成这个类对应的文档
*version2.0
*/

/*这是行内注释*/
public static void main(String[] args/*参数*/){
   
}

Java的8种基本数据类型

java是强类型语言,每个变量必须标明类型

  1. 整型(有符号)
    byte 1B (-128~127)
    short 2B
    int 4B
    long 8B
    整数常量默认int类型
  2. 浮点型
    float 4B 单精度
    double 8B 双精度
    浮点常量默认double类型
    浮点数不能精确计算,若想进行不产生舍入误差的精确的数字计算,则需要使用BigDecimal类
  3. 字符型
    char 2B
    char 在java中是2个字节。java采用unicode,2个字节(16位)来表示一个字符。
char c1 = 'A';
char c2 = '好';
char c3 = "大家" //错误: 不兼容的类型: String无法转换为char

String 字符串,不是一个基本类型,而是一个类。
String 本质上是一个字符数组

String str="Hello World"
  1. boolean 布尔型
    布尔型在内存中1B或4B,不可以使用0或非0的整数代替 false和true,只认小写。

Java基本运算符

//Java的算数运算符
+ - * / %
//Java支持自增自减
int a=10;
a++
++a
a--
--a
//Java支持扩展运算符
+=
-=
*=
/=
%=
//Java的关系运算符,结果为boolean类型
==
!=
>
<
>=
<=
//逻辑运算符
& 逻辑与 :两个操作数为true时,结果才为true
| 逻辑或 :两个操作数有一个为true时,结果为true
&& 短路与 :只要有false则返回false
|| 短路或 :只要有true则返回true
! 非 : 取反 !false=true ; !true=false ;
^ 异或 : 相同为false ; 不同为true ;
//位运算
~ 取反
& 按位与
| 按位或
^ 按位异或
<< 左移
>> 右移
//字符串连接符
//字符串 + 其他 = 字符串 
int r1=3;
int r2=4;
System.out.println(r1+r2);//7
System.out.println("resul_is:"+r1+r2); // resul_is:34
System.out.println("resul_is:"+(r1+r2)); // resul_is:7
//条件运算符 ? :
int a1=100,a2=900;
int max = a1>a2 ? a1 :a2 ;
System.out.println(max); //900

数据类型自动转换和强制转换

自动类型转换

容量小 --> 容量大
容量是指表数范围,而不是指字节数,如long是8字节、float是4字节,但long会往float转换
在这里插入图片描述
实线:无数据丢失的自动类型转换
虚线:可能会有精度损失的自动类型转换

将整数常量(int)直接赋值给byte/short/char等类型时,只要不超过其表数范围,则可直接自动转换为该类型。

将浮点型常量(double)赋值给float时,只要不超过float的表数范围,则可直接自动转换为float类型。

算数运算符,若两个操作数都是整数,如果有一个是long则结果为long,否则无论操作数都是byte还是都是short,其结果就是int

算数运算符,若有一个操作数是double,则结果是double

强制类型转换

double d1=3.98;
int m=(int)d1; // m=3

char c1='C';
int c2=c1+2; //c1+2的结果自动转化为int再赋值给c2
System.out.println(c2);//69
char c3=(char)c2;
System.out.println(c3);//E

//当将一种类型被强制转换为另一种类型时,并超出了目标类型的表数范围,则会被截断成一个没意义的完全不同的值。
int a3=1000;
byte b3=(byte)a3;
System.out.println(b3);//-24

//溢出错误:操作比较大的数,要留意是否出现溢出
int salary = 1000000000; //10亿,int的表数范围是正负21亿
int years = 30;
int total = salary*years;
System.out.println(total); //-64771072
long total0 = salary*years; 
System.out.println(total0); //-64771072
//修改方法一
long total1 = (long)salary*years; //30000000000
System.out.println(total1);//30000000000
//修改方法二
long total2 = 1L*salary*years; //将结果自动转换为long类型
System.out.println(total2);//30000000000 

键盘输入

java输入需要用到Scanner类

/**
*测试键盘输入
*/

import java.util.Scanner ;

public class TestSystemIn{
   

	public static void main(String[] args){
   
	
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入你的学号和姓名,学号和姓名各占一行:");
		String  stuNum = scanner.nextLine();
		String  stuNam = scanner.nextLine();
		System.out.println("你的学号是:"+stuNum);
		System.out.println("你的姓名是:"+stuNam);
		
	}
	
}
/**
*测试键盘输入
*/

import java.util.Scanner ;

public class TestSystemIn{
   

	public static void main(String[] args){
   
	
		Scanner scanner = new Scanner(System.in);

		System.out.println("请输入你的账号名:");
		String  name = scanner.nextLine();
		System.out.println("请输入你的年龄:");
		int age = scanner.nextInt();
		System.out.println("请输入你的月薪:");
		double  salary = scanner.nextDouble();
		
		System.out.println("==========录入以下信息==========");
		System.out.println("账户名:"+name);
		System.out.println("年龄:"+age);
		System.out.println("月薪:"+salary);
		
	}
	
}

流程控制语句:选择

  1. 编程的本质:用代码表示现实的逻辑,现实中的任何逻辑都可以表示为选择循环结构。

Java生成随机数

//[0,1)之间的随机数,double类型
double a=Math.random();

//生成[0,10)之间的随机整数
int r = (int)(Math.random()*10); //10是整数,所以double*int 的结果是double,需要强制类型转换
  1. if…else if…else 多分支
		int age=(int)(Math.random()*100);
		System.out.println(age);
        if (age<15)
            System.out.println("儿童");
        else if (age<=24) {
   
            System.out.println("青年");
        } else if (age<=44) {
   
            System.out.println("中年");
        } else if (age<=64) {
   
            System.out.println("中老年");
        } else if (age<=84) {
   
            System.out.println("老年");
        }else
            System.out.println("老寿星");

随机生成字母a-z

  //随机生成a-z的字母,若字母是a,e,i,o,u则输出"元音"否则输出"辅音"
        int num=(int)(Math.random()*26);
        char c =(char)('a'+num);
        System.out.println(c);
        if(c=='a'||c=='e'||c=='i'||c=='0'||c=='u'){
   
            System.out.println("元音");
        }else {
   
            System.out.println("辅音");
        }

switch语句

switch可以接收:整数、枚举、字符串

		int grade = (int)(Math.random()*3+2);//[0,4]
        System.out.println(grade);
        switch (grade)
        {
   
            case 1:
                System.out.println("大一真好!");
                break;
            case 2:
                System.out.println("大二不错!");
                break;
            case 3:
                System.out.println("大三考研!");
                break;
            case 4:
                System.out.println("大四上岸!");
                break;
            default:
                System.out.println("入海!");
        }
        //季节判断
        int month = (int)(Math.random()*12+1);
        System.out.println(month);
        switch (month){
   
            case 1:
            case 2:
            case 3:
                System.out.println("春季");
                break;
            case 4:
            case 5:
            case 6:
                System.out.println("夏季");
                break;
            case 7:
            case 8:
            case 9:
                System.out.println("秋季");
                break;
            default:
                System.out.println("冬季");
                break;
        }
        //字符串
        String car="比亚迪";
        switch (car){
   
            case "奔驰":
                System.out.println("我买了一辆奔驰车!");break;
            case "奥迪":
                System.out.println("我买了一辆奥迪车!");break;
            case "比亚迪":
                System.out.println("我买了一辆比亚迪车!");break;
            default:
                System.out.println("你猜我买了什么车!");break;
        }

switch处理范围判断 :除法

//超市积分 [7000,10000) 苹果14一台 [5000,7000) 苹果12一台  [3000,5000) 苹果一筐 [0,3000) 棒棒糖一筐
        int score=(int) (Math.random()*10000);
        System.out.println(score);
        switch (score/1000){
   
            case 9:
            case 8:
            case 7:
                System.out.println("苹果14一台");break;
            case 6:
            case 5:
                System.out.println("苹果12一台");break;
            case 4:
            case 3:
                System.out.println("苹果一筐");break;
            default:
                System.out.println("棒棒糖一筐");break;
        }

流程控制语句:循环

        int i =0;
        while (i<=100){
   
            System.out.println(i);
            i++;
        }
        for(int i=0;i<=100;i++){
   
            System.out.println(i);
        }

流程控制语句:嵌套循环

        //打印九九乘法表
        for(int i =1;i<10;i++){
   
            for (int j=1;j<=i;j++){
   
                System.out.print(j
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值