JAVA基础(一)

本文介绍了Java编程语言的基础知识,包括其创始人JamesGosling,主要特性,JDK、JRE和JVM的概念及安装步骤,以及Java程序的基本结构,如变量、数据类型、运算符和条件运算符。此外,还涉及了Local和Math函数以及常量的使用。
摘要由CSDN通过智能技术生成

JAVA简介

JAVA介绍

java是面向对象的开发语言

创始人:James Gosling詹姆斯·高斯林

java特性和优势:跨平台/可移植性,安全性,面向对象,简单性,高能性,分布式,多线程,健壮性

JDK安装配置

JDK、JRE、JVM

  • JVM:全称“Java Virtual Machine”(Java虚拟机,),用于运行Java应用程序。不同的操作系统有不同的虚拟机。Java 虚拟机机制屏蔽了底层运行平台的差别,实现 了“一次编译 ,随处运行”。 Java 虚拟机是实现跨平台的核心机制。
  • JRE:全称“Java Runtime Environment”(Java运行环境),提供核心类库 + JVM
  • JVM:全称“Java Development Kit”(Java开发工具包,程序员使用),包含jre,以及增加编译、调试、监控 等用于程序开发的文件。

JDK安装步骤

注意安装路径中不包含中文和空格

  1. 下载安装包解压
  2. 打开安装程序傻瓜式下载,点击下一步
  3. 配置变量:右击此电脑“属性”,系统>系统信息>高级设置>环境变量;系统环境变量中新建"JAVA_HOM”,变量值浏览目录到JDK安装路径下,点击保存;找到环境变量中“Path”,选中点击编辑,选中“%JAVA_HOME%\bin”点击保
  4. 测试:按住win+r,输入cmd,点击回车;输入java和javac指令,若输出则配置成功;无输出则配置失败

JAVA基础

第一个java程序

  1. 源代码编写

    用记事本或IDE等工具完成代码输出,报春后缀名为.java的Java源文件

  2. 源代码编译

    用javac命令 使用java编译器对源文件进行语法检查,如果没有语法错误,编译成功后将生成后缀名为.class的字节码文件

  3. 运行字节码

    使用java命令启动JVM虚拟机,并使用java解释器将字节码文件编译机器代码,执行并显示结果

转义字符\

  • \n:换行

  • \t:水平制表符,补全当前字符串长度至8的整数倍,根据字符段长度补1~8个空格

  • \:转义字符

    • \\n
      \\t
      

      第一个\表示转义,第二个\表示输出的字符\

      上面输出为:\n 和 \t

    • \\windows\\Syetem
      

​ 第一个\表示转义,第二个\表示输出的字符,第三个\表示转义,第四个\表示输出的字符\,第五个\表示转义,第6个\表示输出的字符\

上面输面输出为:\windows\System

Local和Math函数

  1. Local
    • LocalDate.now():获取本地日期,年月日
      • .getYear():获取年份
      • .getMonth();获取月份,获取英文
      • .getMonthValue();获取月份,获取数字
      • .getDayOfYear();获取今天是今年的第多少天
      • .getDayOfMonth;获取今天是这个月的第多少天
      • .getDayOfweek;获取星期几
    • LocalTime.now():获取本地时间钟分秒
    • LocalDateTime.now();获取本地地日期年月日+时间钟分秒
  2. Math
    • .PI:输出Π(pai:3.1415926)
    • .sqrt(a):开a的平方
    • .pow(a,b):幂运算,输出a的b次方
    • .random():生成0-1之间随机数
    • abs():取绝对值

变量和数据类型

变量

概念
  • 程序运行期间内容可以发生改变的量
  • 从内存角度来解释:变量是代表内存中的一个存储单元
  • 从作用角度来解释:变量用于保存程序在运行过程中产生的临时数据
  • 从语法角度来解释:变量是使用不同数据类型,来进行定义保存数据的语法形式
关键字

java关键字是java语言保留供内部使用的,关键字也可称为保留字,不能使用关键字作为变量名或方法名

关键字

命名要求
  • 变量名有英文字母,下划线,$符号,数字组成,其中数字不能做开头不能使用java关键字作为变量名
  • 驼峰命名法
    • 类:大驼峰命名法,不管多少个单词首字母大写,eg:Myname
    • 方法:小驼峰命名法,超过两个单词时每个单词首字母大写,eg:MyName

基本数据类型

四类八种:

  1. 数值型:

    • 整数类型:byte,short,int,long
    • 浮点数类型:float,double
  2. 非数值型

    • 字符类型:char
    • 布尔类型:boolean
  3. 1byte(字节)=8bit(位)

    • bit:计算机能识别的最小单位,1bit存放一位0/1

    • 1字节等于8位,8位0/1,其中第一位表示正负(0代表正1代表负)所以byte的范围是-(2的七次方)到(2的七次方-1)

    • 1字节:byte

      2字节:short char

      4字节:int boolean float

      8字节:long double

整型
  • byte:

    • 范围:-128~127

    • 定义语法:

      byte a;
      
  • short:

    • 范围:-32768~32767

    • 定义语法:

      short a;
      
  • int:

    • 范围:-2147483648~2147483647(-2的31次方到2的31次方-1)

    • 定义语法:

      int a;
      
  • long:

    • 范围::

      **-**9223372036854775808 ~ **+**9223372036854775807 (-2的63次方到2的63次方-1)

    • 定义语法:

      long a;
      long a1=90000000000L;
      

注:定义变量时赋值需要在后面加上l或者L;

浮点型

浮点类型数值就是小数,因为小数用科学计数法表示的时候,小数点是可以”浮动“的,如1234.5可以表示12.345×10的平方,所以称为浮点数

定义小数默认double

存贮方式

float 4个字节 32位 eg:
123.456 x 1 0 5 123.456x10^5 123.456x105
最高位:符号位 存放正负

符号位下7位:存储幂指数 存放10的6次方的6

剩下23位:有效位 存放123.456

  • float

    • 范围:最大可表示3.4×10的38次方

    • 定义语法:

      float a;
      float a1=3.14f;
      

      注:定义变量时赋值需要在后面加上f或者F

  • double

    • 范围:最大可表示1.79×10的308c次方

    • 定义语法:

      double a;
      
字符类型

char类型表示一个字符,该类型只能表示非负值,java中ASCII值可以用char和Unicode表示

定义语法:

char a;
char a1='9';

注:char类型使用单引号,且仅有一个字符

布尔类型

boolean类型只有true和false两个值,布尔类型是关系运算的计算结果

定义语法:

boolean a1=true;
boolean a2=false;

引用类型

除8中基本数据类型外,其余类型都是引用数据类型,最常见的是String字符串,用于保存若干的字符

定义语法:

String str1="我本将心照明月";

注:String类型使用双引号

常量

  • 定义:

    **在程序运行期间,固定不变的量;**常量值又称为字面常量,它是通过数据直接表示的

  • 常量定义:

    定义变量时,如果加上final关键字,这个变量就变成了常量。定义常量时,必须精选初始化赋值,之后就不可以再次赋值,再次赋值会导致编译错误。一般情况下常量名使用大写字母表示

    final double PI=3.14;
    double r=5.0;
    double area=PI*r*r;
    PI =300;  //编译错误,常量不允许被修改
    
  • 常量的作用:

    用有意义的变量名来避免魔法数字,例如不要再代码中到处写3.15;而是定义一个PI来表示3.14;如果需要提高计算精准度,我们住需要在定义PI处修改,而不必所有地方替

变量定义

赋值

要在取值范围之内赋值

byte a  = 127;
byte b  = 128;

打印a输出127,打印b输出-128

类型转换
自动类型转换

取值范围小转换为取值范围大的类型

大范围类型 变量名 = 小范围的变量名

byte a = 10;
int b = a;

float f1 = 12.3F;
double d = f1;

b输出10,d输出12.3

强制类型转换

取值范围大转换为取值范围小的类型

小范围的数据类型 变量名 = (小范围的数据类型)大范围的变量名

int a = 10;
byte b  = (byte)a;
System.out.println(b);
	    
double d = 12.5;
float f = (float)d;
System.out.println(f);

不加强制类型转换报错

强制类型转换会出现的两个问题

  • 溢出

    范围大转化为范围小时,值大于小范围的取值时就会出现溢出问题

    int a = -129;
    byte b = (byte)a;
    System.out.println(b);
    

    a进行强制类型转换溢出,b会输出127

  • 精度丢失

    当高精度的值强制转化为低精度的值时就会出现精度丢的问题

    float f = 12.5F;
    int c = (int)f;
    System.out.println(c);
    

    当float类f型强制转化为整型c时,c精确度是1,f精确度是0.1,造成小数位的丢失,c会输出12

运算符

算数运算符

单目运算符:+(取正),-(取负)

双目运算符:+,-,×,/,%

单目运算符

取正:+

取负:-

双目运算符
  • +加

    • 数字+数字:

    • 数字+字符串

    • 字符串+字符

      int a = 10;
      int b = 10;
      String s="中国人";
      System.out.println(a+b);  //输出:20
      System.out.println(a+s);  //输出:10中国人
      System.out.println(a+s+b); //输出:10中国人10
      
  • -减

只能进行数字减数字

int b = 10;
float f = 11.5F;
float f1 = 1.5F;
System.out.println(f-b);  //输出1.5
System.out.println(b-f1); //输出8.5
  • *乘

只能进行数字乘数字

  • /除

    • 整数/整数=整数
    • 整数/浮点数=浮点数
  • %取余

    • 整数%整数=整数
    • 整数%浮点数=浮点数
赋值运算符

+=,-=,*=,/=,%=

int a=2;  
  a +=4;   //相当于a=a+4即a=2+4,其他同理

自增减运算符

单独使用,符号前后代表的值一样

混合使用

++在前,先自增,-- 在前,先自减

++在后,先赋值,-- 在后,先赋值

自增:++

int a=10;
int b=a++;
int c=++a;
//a输出12(自加了两次)b输出10(第二行a先赋值给了b,再自家),c输出12(第二行自加一次,第三行先自自加又赋值给了c)

自减:同理自加

不同类型的运算
  1. 不同类型的运算,结果去大范围的

  2. char类型可以进行运算

    //      ASCII码表   -  小码表  存储0-177之间内容
    //		Unicode码表   -   大码表 
    		char c = 'A';
    		char c1 = 65;
    	    char c2 = (char)(c+32);
    	    int  a = c;
    		System.out.println(c);
    		System.out.println(c1);
    		System.out.println(c2);
    		System.out.println(a);
    

    c输出A,c1输出A,c2输出B,a输出65

  3. boolean类型不可做运算

  4. byte,short,char

    byte,short,char运算

    byte,short,char进行运算时,将其转为int

    byte a = 10;
    byte b = 10;
    byte c = (byte)(a+b);
    int  c1 = a+b;
    byte b1 = 10;
    byte b2 = (byte)(b1+10);
    System.out.println(c);
    System.out.println(c1);
    System.out.println(b2);
    

    第三行若不加强制类型转换(byte),则报错;byte类型的a和b在运算时转换为int类型,定义int类型c1则正确;计算b2时,byte类型b1自动转换为int类型,所以把(b1+10)强制类型转换为byte类型

关系运算符

==,!=,>,<,>=,<=

int a=10;
int b=18;
System.out.println(a > b);  //输出布尔类型,true/false
逻辑运算符

左右两边为boolean类型,运算得到boolean类型

短路与非短路区别:当短路能确认结果是就不会再进行计算,而非短路会全部算完

    • 短路与&&:
      • 前面为假不进行后面的运算,直接返回false
      • 两边为真,则为真,有假则假
    • 非短路与&
      • 两边为真,则为真,有假则假(不具备短路路运算)
    • 短路或||:
      • 前面为真不进行后面的运算,直接返回true
      • 有真则真,都假则假
    • 非短路或|
      • 有真则真,都假则假(不具备短路路运算)
  • !:取反

位运算
  • &按位与

    两个都为1,结果为1

    可用此判断奇偶数

       int a=5;
       int b=6;
       int c=a&1;
       int d=b&1;  
       System.out.println("a是奇数"+(c==1));
       System.out.println("b是偶数"+(d==0));
    
    
  • |按位或

    两个中有1,结果为1

  • ~按位取反

    • 原码,反码,补码:

    原码:数的二进制表示就是原码

    反码:正数–>正数的反码等原码

    ​ 负数–>符号位不变,其他位取反

    补码:正数–>正数的补码等于原码

    ​ 负数–>负数的补码的等于补码+1

    • !!!按位取反的步骤:

    正数按位取反:二进制原码–>二进制原码取反–>二进制原码取反-1–>(二进制原码取反-1)再取反符号位不参与–>二进制结果

    负数按位取反:二进制原码–>反码:符号位不变其他位取反–>补码:反码+1(得到补码符号位为0,正数)–>二进制结果(正数的原码反码补码相同,上一步得到一个整数的补码,既是此数的原码)

  • ^按位异或

    相同为0,不同为1

    aab=b;

    abb=a;

    可以用于两个数字交换

    int a=2;
    int b=4;
    a=a^b;
    b=a^b;
    a=a^b;
    //输出结果a为4,b为2,实现了交换
    
  • << / >> 左移 /右移

    左移:十进制5左移2 0000 0101 将变为0000 1010

    右移:十进制8右移1 0000 1000 将变为0000 0100

    左移1相当于×2,左移2相当于×4

    右移1相当于除,右移2相当于除4

条件运算符

表达式1 ?表达式2 :表达式3

表达式1返回值为boolean类型,true执行表达式2,false执行表达式3;表达式2和表达式3的类型必须相同

用处:取两个数的较大值或较

int a = 2;
int b = 4;
int c = a > b ? a : b;
//若a>b,则取a;否则取b
  • 31
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值