Java基础学习1

简介:

 

1   Java的数据类型

l  基本类型(8种)

l  引用类型

 

 

2   八种基本类型

byte

1

-128127-2727-1

short

2

-215215-1

int

4

-231231-1

long

8

-263263-1

float

4

单精度

IEEE 754规范

美国电子电气工程师协会浮点数表示规范

double

8

双精度

char

2

065535

0216-1

boolean

1

  true   00000001

  false  00000000

 

 

 

2.1     计算机的存储单位

l  bit - 比特,电位

l  byte - 字节,8bit

l  Kb - 1024 byte

l  Mb - 1024 Kb

l  Gb - 1024 Mb

l  Tb - 1024 Gb

l  Pb - 1024 Tb

 

 

2.2     二进制

l  byte

 

 

10000000  -128

...

11111100  -4

11111101  -3

11111110  -2

11111111  -1

00000000  0

00000001  1

00000010  2

00000011  3

00000100  4

00000101  5

00000110  6

00000111  7

00001000  8

...

01111111  127

 

 

84608

8*104

4*103

6*102

8*100

11011

24

23

21

20

853

8530

85300

110

1100

11000

 

674

2取余法

 

674 /2  337 0

337 /2  168 1

168 /2  84 0

84 /2  42 0

42 /2  21 0

21 /2  10 1

10 /2  5 0

5 /2  2 1

2 /2  1 0

1 /2  0 1

 

1  1

10  2

100  4

1000  8

10000  16

100000  32

1000000  64

10000000  128

100000000  256

1000000000  512

10000000000  1024

 

 

 

1000个苹果,分装机箱,

不管客户要多少苹果,都可以整箱交付

 


 

 

 

变量交换

 

//项目:变量交换

 

package ;

 

import java.util.Scanner;

 

public class Test1 {

   public static void main(String[] args) {

      //提示输入

      System.out.print("输入整数a");

      //获得输入的值,保存到变量a

      int a = new Scanner(System.in).nextInt();

 

      System.out.print("输入整数b");

      int b = new Scanner(System.in).nextInt();  

     

      //变量交换,三步转圈赋值

      int c = a;

      a = b;

      b = c;

     

      System.out.println("a = "+a);

      System.out.println("b = "+b);

   }

}

 

 

 

 

 

自由落体距离

//项目:自由落体距离

 

package ;

 

import java.util.Scanner;

 

public class Test1 {

   public static void main(String[] args) {

      System.out.println("输入降落时间(秒):");

      //获得输入的值,保存到变量t

      double t =

       new Scanner(System.in).nextDouble();

     

      //调用f()方法

      //把时间t的值,传递到f()方法计算

      //得到f()方法的计算结果,保存到变量d

      double d = f(t);

      System.out.println(t+秒降落了 "+d+"); 

   }

  

   static double f(double t) {

      double d = 0.5*9.8*t*t;

      return d;//把计算结果返回到上面调用位置

   }

  

}

 

 

 

2.3     char类型(2字节)

l  字符、字符的整数编码

 

Unicode编码表

0

nil

1

?

2

?

3

?

...

 

97

a

98

b

...

 

20013

...

 

65535

 

 

 

l  char c1 = 97

char c2 = 'a'

 

 

2.4     基本类型的字面值(5条规则)

1.  整数字面值是int类型

int a = 56456;

//右侧字面值是int类型,但超出int范围

long a = 9999999999;

 

2.  byte,short,char三种比int小的整数,可以用范围内的值,直接赋值

 

//右侧是byte,不是int

byte a = 127;

//右侧是int

byte a = 128;

 

3.  浮点数字面值是double类型

double a = 3.14;

//右侧是double,不是float

float a = 3.14;

 

4.  字面值后缀

L - long

    long a = 9999999999L;

 

F - float

    float a = 3.14f;

 

D - double

    double a = 3.0;

    double a = 3d;

 

5.  进制前缀

16进制:

   两个16进制字符,可以表示一个字节

 

8进制:

   18进制字符,可以表示3

 

0x - 16进制

     0xff    255

 

0  - 8进制

     0377    255

 

\u - char类型16进制

     必须表示char类型完整的两个字节值

     'a'  '\u0061'

     ''  '\u4e2d'

 

2.5     基本类型的运算规则(5条规则)

1.  计算结果的数据类型,与最大的类型一致

 

3/2   1

3d/2  1.5

 

2.  byte,short,charint小的整数,运算时,会自动转成int

 

byte a = 3;

byte b = 4;

//错,右侧是int+int,结果是int

byte c = a+b;

 

3.  整数运算溢出

 

Integer.MAX_VALUE+1

得负数最小值

 

300000000*60*60*24*365

300000000L*60*60*24*365

 

01111111111111111111111111111111 +1

10000000000000000000000000000000

 

4.  浮点数运算不精确

 

2-1.9

 0.10000000000000009

 

4.35*100

 434.9999999999999999994

 

Java中有精确运算方法,后面会讲

 

5.  浮点数的特殊值

 

n  Infinity(无穷大)

 

3.14/0

Double.MAX_VALUE*2

 

n  NaNNot a Number

 

Math.sqrt(-3)

 

 

2.6     基本类型的类型转换

l  小的类型转成大的类型

 

 

byte a = 127;

int b = a;

 

01111111

00000000 00000000 00000000 01111111

 

byte a = -1;

int b = a;

 

11111111

11111111 11111111 11111111 11111111

 

l  大的类型转成小的类型

n  必须强制转型

 

int a = 356;

byte b = (byte) a;

 

   00000000 00000000 00000001 01100100

      01100100

 

 

牛郎织女

两颗星相距16.4光年

光速 299792458 /

喜鹊身长 0.46 

牛郎织女相会,需要多少只喜鹊

 

//项目:牛郎织女

 

package ;

 

public class Test1 {

   public static void main(String[] args) {

      System.out.println("两颗星相距16.4光年");

      System.out.println("光速 299792458 /");

      System.out.println("喜鹊身长 0.46 ");

      System.out.println("牛郎织女相会,需要多少只喜鹊");

     

      //1光年是多少米

      long ly = 299792458L*60*60*24*365;

      //16.4光年是多少米

      double d = ly*16.4;

      //求喜鹊数量

      double r = d/0.46;

      //向上取整

      //Math.ceil(r)

      //取整结果是 double 类型 6436345.0

      long n = (long) Math.ceil(r);

      System.out.println(n);

   }

}

 

 

3   运算符

+-*/

 

+

数学运算

字符串的连接运算

%

取余、求模

判断变量a能否被4整除,

a%4余数是0

==

!=

相等

不相等

> >=

< <=

大小比较

&&

逻辑与

左边是真,并且右边是真,结果是真

短路与,左边是假,右边忽略不执行

||

逻辑或

左边是真,或者右边是真,结果都是真

短路或,左边是真,右边忽略不执行

!

非真是假,非假是真

对布尔值做相反判断

判断“非a”是真,即a是假

if(!a) {

 

}

&

位与

两位都是1结果是1

|

位或

有一位是1,结果就是1

^

异或

不同是1

对同一个值异或两次,得到原值

~

求反

10,01

>> 

带符号向右移位

符号位是0,左边补0

符号位是1,左边补1

>>> 

不带符号向右移位

不管符号位是0还是1,左边都补0

<< 

向左移位

++

--

自增1、自减1

 

int a=5

print(a++)先取值后自增

 

1)  先取出a的原值等待打印

2)  a自增变成6

3)  打印原值5

 

int a=5

print(++a)先自增后取值

 

1)  a自增变成6

2)  取出a的新值等待打印

3)  打印a的新值6

? :

三项运算

1 ? 2 : 3

 

1是真,取2的值

1是假,取3的值

=

赋值

+=

^=

>>=

...

复合的赋值运算

a += 2; //a = a+2;

 

自动转型

byte a = 2;

a = (byte) (a+2);

a += 2;

a += 3.94;

()

转型运算

 

l  向右移1位相当于除2

l  向左移1位相当于乘2

 

3.1     运算符优先级

l  不用记优先级表,多加小括号

 

(1+(2-3))*4/5

 

 

 

 

平年闰年

输入年号,显示是平年还是闰年

闰年条件:

*) 能被4整除,并且不能被100整除

*) 能被400整除

 

2000

1000

2016

2018


//平年闰年

package ;

 

import java.util.Scanner;

 

public class Test1 {

   public static void main(String[] args) {

      System.out.print("输入年号:");

      int y = new Scanner(System.in).nextInt();

      //调用runNian()方法

      //对年号 y 的值判断是否闰年

      //该方法返回 boolean 

      if(runNian(y)) {

         System.out.println("闰年");

      } else {

         System.out.println("平年");

      }

   }

  

   static boolean runNian(int y) {

      boolean run = false;//假设不是闰年

      /*if(y%4 == 0) {//能被4整除

         //能被4整除的情况下

         if(y%100 != 0) {//再判断不能被100整除

            run = true;

         }

      }

      if(y%400 == 0) {//能被400整除

         run = true;

      }*/

     

      if((y%4==0 && y%100 != 0) || y%400==0) {   

         run = true;

      }

      return run;

   }

  

}

 

 

 

 

3.2     位运算

00000000000000000000000001110011

00000000000000000000000001010101 &

----------------------------------

00000000000000000000000001010001

 

 

00000000000000000000000001110011

00000000000000000000000001010101 |

----------------------------------

00000000000000000000000001110111

 

 

00000000000000000000000001110011

00000000000000000000000001010101 ^

----------------------------------

00000000000000000000000000100110

 

 

00000000000000000000000001110011 ~

----------------------------------

11111111111111111111111110001100

 

 

00000000000000000000000001110011 >>2

00000000000000000000000000011100

 

10000000000000000000000001110011 >>2

11100000000000000000000000011100

 

10000000000000000000000001110011 >>>2

00100000000000000000000000011100

 

10000000000000000000000001110011 <<2

00000000000000000000000111001100

 

 

位运算

10011001 10000100 10111000 11110011

 

10011001

10000100

10111000

11110011

 

r

10011001 10000100 10111000 00000000

11111111 11111111 11111111 11110011

 

 

//项目:int拆分4字节

package *;

 

import java.util.Scanner;

 

public class Test1 {

   public static void main(String[] args) {

      System.out.print("输入整数:");

      //获得输入的值,保存到变量n

      int n = new Scanner(System.in).nextInt();

     

      /*

       * n向右移动24,16,8,0

       * 再强转成 byte类型

       * 分别保存到b1,b2,b3,b4变量

       * 再打印显示

       */

      byte b1 = (byte) (n>>24);

      byte b2 = (byte) (n>>16);

      byte b3 = (byte) (n>>8);

      byte b4 = (byte) (n>>0);

      System.out.println(b1);

      System.out.println(b2);

      System.out.println(b3);

      System.out.println(b4);

     

      //

      int r = 0;

      /*

       * b1,b2,b3,b4

       * 左移24,

       * 再不带符号右移0,8,16,24

       * 结果再与r求或,保存到r

       */

      //r = r | (b1<<24>>>0);

      //r = r | (b2<<24>>>8);

      //r = r | (b3<<24>>>16);

      //r = r | (b4<<24>>>24);

     

      /*

       * b1,b2,b3,b4

       * 0x000000ff求与

       * 再左移 24,16,8,0

       * 结果再与r求或,保存到r

       */

      r = r | ((b1 & 0x000000ff) << 24);

      r = r | ((b2 & 0x000000ff) << 16);

      r = r | ((b3 & 0x000000ff) << 8);

      r = r | ((b4 & 0x000000ff) << 0);

     

      System.out.println(r);

   }

}

 


 

三个整数的最大值

项目: day0108_三个数最大值

类: day0108.Test1

 

package day0108;

 

import java.util.Scanner;

 

public class Test1 {

   public static void main(String[] args) {

      System.out.println("输入三个整数");

      int a = new Scanner(System.in).nextInt();

      int b = new Scanner(System.in).nextInt();

      int c = new Scanner(System.in).nextInt();

     

      //a,b的最大值保存到max

      //max,c的最大值保存到max

      //int max = a>b ? a : b;

      //max = max>c ? max : c;

     

      int max = a>b ? (a>c?a:c) : (b>c?b:c);   

     

      System.out.println("最大值:"+max);

   }

}

相关文章
|
26天前
|
Java 数据库 数据安全/隐私保护
银行流水生成器在线制作,银行转账p图在线生成,java实现最牛的生成器【仅供学习用途】
本资料探讨银行系统核心技术,涵盖交易记录生成、电子回单加密验真及基于Java的财务管理系统开发。主要内容包括:交易记录实体类设计(不可变性与数字签名)
|
27天前
|
数据采集 搜索推荐 算法
Java 大视界 -- Java 大数据在智能教育学习社区用户互动分析与社区活跃度提升中的应用(274)
本文系统阐述 Java 大数据技术在智能教育学习社区中的深度应用,涵盖数据采集架构、核心分析算法、活跃度提升策略及前沿技术探索,为教育数字化转型提供完整技术解决方案。
|
23天前
|
Oracle Java 关系型数据库
java 入门学习视频_2025 最新 java 入门零基础学习视频教程
《Java 21 入门实操指南(2025年版)》提供了Java最新特性的开发指导。首先介绍了JDK 21和IntelliJ IDEA 2025.1的环境配置,包括环境变量设置和预览功能启用。重点讲解了Java 21三大核心特性:虚拟线程简化高并发编程,Record模式优化数据解构,字符串模板提升字符串拼接可读性。最后通过图书管理系统案例,展示如何运用Record定义实体类、使用Stream API进行数据操作,以及结合字符串模板实现控制台交互。该指南完整呈现了从环境搭建到实际项目开发的Java 21全流程实
53 1
|
27天前
|
算法 Java 测试技术
Java 从入门到实战完整学习路径与项目实战指南
本文详细介绍了“Java从入门到实战”的学习路径与应用实例,涵盖基础、进阶、框架工具及项目实战四个阶段。内容包括环境搭建、语法基础、面向对象编程,数据结构与算法、多线程并发、JVM原理,以及Spring框架等核心技术。通过学生管理系统、文件下载器和博客系统等实例,帮助读者将理论应用于实践。最后,提供全链路电商系统的开发方案,涉及前后端技术栈与分布式架构。附代码资源链接,助力成为合格的Java开发者。
53 4
|
26天前
|
Java
银行转账p图软件,对公转账截图生成器,java版开发银行模拟器【仅供学习参考】
这是一套简单的银行账户管理系统代码,包含`BankAccount`和`BankSystem`两个核心类。`BankAccount`负责单个账户的管理
|
26天前
|
存储 Java 数据库
银行流水生成器在线制作,银行转账p图在线生成,java实现最牛的生成器【仅供学习用途】
本示例展示了一个基于Java的银行交易记录管理系统基础架构,涵盖交易记录生成、数字签名加密及账本存储功能。核心内容包括:1) TransactionRecord类
|
1月前
|
Java 数据挖掘 调度
Java 多线程创建零基础入门新手指南:从零开始全面学习多线程创建方法
本文从零基础角度出发,深入浅出地讲解Java多线程的创建方式。内容涵盖继承`Thread`类、实现`Runnable`接口、使用`Callable`和`Future`接口以及线程池的创建与管理等核心知识点。通过代码示例与应用场景分析,帮助读者理解每种方式的特点及适用场景,理论结合实践,轻松掌握Java多线程编程 essentials。
95 5
|
1月前
|
Cloud Native Java 程序员
【2025 最新版互联网一线大厂 Java 程序员面试 + 学习指南】覆盖全面面试知识点、实用面试技巧及前沿技术实操内容
本内容涵盖互联网大厂主流技术栈的最新实操指南,包括微服务架构(Spring Cloud Alibaba Nacos、OpenFeign、Spring Cloud Gateway)、容器化与Kubernetes、云原生技术(Istio、Prometheus+Grafana)、高性能开发(Reactor响应式编程、CompletableFuture异步编程)及数据持久化(Redis分布式锁、ShardingSphere分库分表)。通过详细代码示例和操作步骤,帮助开发者掌握核心技术,适用于本地环境搭建与模块功能实践。适合Java程序员学习和面试准备,附带资源链接供深入研究。
62 5
|
1月前
|
缓存 算法 Java
【Java 程序员面试 + 学习指南】覆盖互联网一线大厂 Java 程序员所需面试知识点与技巧
本指南专为Java程序员准备互联网大厂面试而设,涵盖面试知识点与技巧两大部分。知识点包括Java基础(面向对象、集合框架、并发编程)、JVM(内存分区、回收机制、类加载机制)、数据库(MySQL、Redis)、开发框架(Spring、Spring Boot、MyBatis)及其他相关技术(计算机网络、操作系统)。面试技巧涉及简历撰写、项目经验阐述及答题策略,助你全面提升面试成功率。提供资源链接,支持深入学习。
50 4

热门文章

最新文章