Java基础概念1
一、Java数据类型
1、byte 字节型
1byte = 8bit 表示数范围:-2^7~2^7-1(-128~127);
2、short 短整型
2 byte = 16bit 表示数范围:-2^15~2^15-1(-32788~32787);
3、int 整型
4byte =32bit 表示数范围:-2^31~2^31-1(-2147483648~2147483647);
4、long 长整型
8byte = 64 bit 表示数范围:-2^63~2^63-1
5、char 字符型
2byte =16bit 表示数范围:0~2^16(0~65535)
既是字符,又是数字;使用特定字符编码,表示不同的字符;表示方式如下:
char c1 ='A'; c1 ='B'; c1 ='@'; c1 ='中‘;
6、字符编码:
ASCII码 美国 1byte中7bit 表示数范围:0~127
十进制 48 49 65 66 97 98
十六进制 ox30 ox31 ox41 ox42 ox61 ox62
字符 ‘0’ '1' ‘A’ ‘B’ ‘a’ 'b'
ISO8859-1(latin-1) 1byte中8bit 表示数范围:0~256
GBK编码 2byte 16bit
UTF-8编码是Unicode编码的一种,目前项目中用得多。英文 1byte存储一个字符;中午 3byte存储一个字符。
Java中的char使用Unicode编码,2byte存储,65536种数字对应不同的字符。全球化支持大多是国家的字符。
7、char类型写法:2byte =16bit
char c1 =‘A’;
char c2 ='\u0041’;
Unicode表达法:‘\u四位十六进制’。
技巧:获取中文Unicode jdk\bin,jdk提供了native2ascii。exe
步骤:
1)在d:\新建1.txt——打开编辑——中国——保存;
2)d:\>native2ascii 1.txt 2.txt,生成2.txt文件;
3)打开d:\的2.txt得到编码。
8、区分字符和字符串
char c1 = ‘a’; 只能写一个字符 ,基本类型;
String s1 =“abc”;任意写多个字符,引用类型。
9、float 单精度浮点型,有精度误差,二进制数无法精确表示0.1;
4byte = 32bit,能够表示2.0E30,科学计数法(2.0*10^30);
底层存储:高3个字节保存数据,底1个字节保存位权;
00000000 00000000 00000010 00011110
10、double双精度浮点型,有精度误差,二进制数无法精确表示0.1;
8byte =64bit
底层存储:高6个字节保存数据,底2个字节保存位权;
11、boolean布尔型,最多1byte中的1bit;Java:只有两个字面值true、false。
用途:表示两种状态,常用于条件判断;
boolean flag = true;//表示好天气
if(flag){
打印出去玩;
}else{
打印继续学习;
}
练习:求出9的99次方,得到精确的结果。
基本类型:int、long、double;引用类型:String、Scanner、System等;
使用java.math.BigInteger类,大整数类;内存有多大,就能表示多大。
12、引用数据类型(主要关注底层存储结构)又称为复杂类型、对象类型
底层存储:引用变量 —>内存对象
按照表现形式分5种:
类class、接口interfac、数组String[]/int[]、枚举、标注
13、计算机主要硬件设备:
磁盘(程序) 内存(进程) CPU(指令)
JVM内存的三大区域:
1)Stack栈区:存放局部变量(临时变量)—定义在方法中的变量;
栈是一种先进后出的数据结构。FILO(First In,Last Out)
2)Heap堆区:存放对象
3)Code方法区:存放类的信息、静态资源
以class为例,说明引用类型的结构。
(1)JDK中已定义的引用类型class
java.lang.String 类 字符串类
java.lang.System类 系统类
java.lang.Integer类 int包装类
java.lang.Long类 long包装类
java.until.Scanner类 扫描器类
java.math.BigInteger类 大整数类
(2)自定义引用类型calss
类是对象的一种抽象、模板、蓝图 水果 动物
对象是类的具体实例(具体化) 某个苹果 具体个体
练习:
设计一个学生类,并表示成一些对象
基本思路:需要表示学生数据,找学生类,创建对象,赋予属性值,使用方法功能;
(1)定义出一个类,类名Student
package day04;
public class Studeng{//类体
//有什么?数据抽象、属性
String name;
int age;
char hobby;
//会什么?功能抽象、方法
//学习 study,参数course表示课程的名称
public void study (String course){
System.out.println(name+"学习"+course);
}
}
(2)使用Student类创建对象,调用方法;
psckage day04;
public class TestStudent{
public static void main(String[] args){
Student stu1 = new Student();
stu1.name = "tom";
stu1.age = 29;
stu1.study("JavaSE");//调用方法
}
}
15、void无返回值类型
只能用在方法返回值类型,表示无需返回结果
16、数据类型的转换
1)自动类型转换
(1)常数在表数范围内能够自动转型
byte b1 = 123; //int->byte [-128,127];
char c1 = 65; //int->char [0,65535];
char c2 = 'A' + 1;//int->char;
(2)范围小的自动向范围大的转型
byte->short(2)->int(4)->long(8)->float(4)->double(8)
char(2)
int n1 ='A'; //char->int 65
double d1 =123; //int->double
double d2 = 123.5 +5; //double + int,自动类型提升为double(就大);
(3)引用类型子类能够自动转化为父类
java.lang.Object类,是所有类的父类;
Student stu1 =new Student();
Object obj = stu1; //Student ->Object
(4)基本类型可以和包装类型之间互相转换,Java为8种基本类型提供了对应的包装类。
原因:Java什么都是对象,基本类型也想变成对象?
包装类都在Java.jang包下:几乎都是首字母大写
基本类型:byte short int long char float double boolean
包装类: Byte Short Integer Long Chatcter Float Double Boolean
int n1 = 123;
Integer in1 = n1; //int ->Integer 自动封箱
int n2 = in1; //Integer ->int 自动拆箱
2)强制类型转换
除了自动转型外,都使用强制转型;
语法:(数据类型)数据、变量、表达式、方法调用。。。
规则:保留低位字节,舍去高位字节。
128的二进制补码:32位:00000000 00000000 00000000 10000000
byte:8位:10000000
byte n1 = (byte)128; -128
byte b1 = (byte)128;
二、运算符和表达式
运算符:operator + - * / =
表达式:expression 1+2 a=1;
将数据使用运算符进行合理连接,形成表达式。实现实际业务操作的表达。
运算符(学习目标:先了解功能,后续不断应用)
赋值运算符Assignment operators
= 、*=、/=、%=、 += 、-=、《=、》=、 >>>= 、&=、^=、|=、
比较运算符:>、>=、<、<=、instanceo
判断是否相等运算符:==、!=
算术运算符:+、-、*、/、%(取余数)
移位运算符:>>、<<、>>>
位运算:&、|、^、~
逻辑运算符:&&与、||或、&与 、|或
条件运算符:?:(三目运算符_?_:_)
其他运算符:++、--、(<data-type>

优先级:a+b*c、(a+b)*c;技巧:使用()可以提高优先级
结合律:相同优先级考虑
a+b-c 一般从左->右
从上往下,优先级递减:
1、
():提升优先级和提高可读性——(a+b)/(c-d)
[]:取数组小标——a[0]、a[1]...
. : 取成员运算符 成员(属性、方法),可以理解为stu1的age——stu1.age+1 stu1.study("JabaSE")
++:自增1运算符——
int a =1;
//前++,先自加1,再取值 a = a+1; 再取a
System.out.println(++a); //2
System.out.println(a); //2
//后++,先取值,再自加1——先取a打印,再a = a+1;
System.out.println(a++); //2
System.out.println(a); //3
--:自减1运算符
&:按位与、逻辑与;
^:按位异或;”同0异1“;
|:按位或;”有1则1,全0则0“;
&&:逻辑与(短路与);
条件1 && 条件2
如果条件1为true,还需判断条件2
如果条件2为true,结果为true
如果条件2为false,结果为false
如果条件1为false,无需判断条件2,结果为false
||:逻辑或(短路或 );
条件1 || 条件2
如果条件1为true,还需判断条件2
如果条件2为true,结果为true
如果条件2为false,结果为false
如果条件1为true,无需判断条件2,结果为true
用途:具体问题具体分析
&&:能够简化操作,提高效率(性能)
&:当两个条件都需要判断是使用(条件兼顾)
<boolean_axpr>?<expr1>:<expr2>:条件运算符:(三目运算符)
条件表达式?条件为真的结果:条件为假的结果
写一个程序,求出a和b的最大值
int a = 3;
int b = 5;
int max = a > b ? a : b;
打印max 5
赋值运算符:特点优先级最低
=: *=: /=: %=: +=: -=: <<=: >>=: >>>=: &=: ^=: |=:
double d1 = 1+2/(a * c - b) + 100;
int a = 5;
a *= 6; //近似等价于 a = a *6;
byte b1 =1;
byte b2 =2;
byte b3 =b1 + b2;//编译无法通过,提升为int计算,需要强制类型转换;
b1 += b2; //可以,近似b1 = b1 + b2 不会提升为int。
三、Java方法
3W1H:
What?是什么?核心概念——> Why?为什么使用,好处——> Where?应用领域——> How?如何应用?程序实践
1、含义:
Java的方法method,在其它语言中称为函数function。方法表示一段固定的代码,表示固定的业务逻辑;便于反复使用,易于维护。
数学的函数(function):y = f(x) = 2 * x + 1;
可以提高软件::可复用性、易维护性。
2、方法的定义和使用
(1)方法的定义(设计)
方法三要素:方法名、参数表、返回值类型;
方法只能在类体中定义,并且不能嵌套定义,方法是并列在类提中的。
具备方法体:表示方法业务代码
1)方法的声明(签名)三要素:
public static int add(int a, int b)
2)方法的实现(方法体){}:
public static int add(int a, int b){
return a + b;
}
(2)方法的使用(调用call或invoke)
原则:从哪里调用,就从哪里返回
package day05;
public class TestAdd{
public static void main(String[] args){
int a = 3;
int b = 5;
//int c = a + b;
int c = add(a,b); //方法的调用。实际参数
int d = add(7,8);
system.out.println("C=" + c); //8;
}
public static int add(int a ,int b){ //形式参数,临时参数,是实际参数的副本(拷贝)用完即释放
return a + b;
}
1、Stack区:局部变量分配空间
max
b=5
a=3
2、将实参a、b拷贝给形参a、b,比较形参;
b=5
a=3
max
b=5
a=3
3、释放形参后,赋值给max=5;
max
b
a
4、释放所有空间

Java基础概念1的更多相关文章
- Java基础概念语法
Java基础概念语法 注释 单行注释 //行注释说明 多行注释 /* 多行注释说明 */ 文档注释 /** *@author 程序的作者 *@version 源文件的版本 *@param 方法的参数说 ...
- 2016第20周四java基础概念
简单的说JDK=JRE+Java编译器.调试器.工具类库等:JRE=JVM(类似于jre目录下的bin)+必要运行的类库(类似于jre目录下的lib) JVM:Java Virtual Mechina ...
- java基础概念整理综合 及补充(jdk1.8)
2018 java基础 笔记回顾摘要 一 1,html 与 注释: <!-- --> 注释不能嵌套 代码都得有注释. 2,空格符: 3,css选择的优先级: id选择器 > ...
- 你猜这个题输出啥?-- java基础概念
最近在看java编程思想,大部分内容都觉得没啥意思,但是突然看到一个基本概念(似乎都忘了),于是写了测试题,我想这辈子也不会忘这个概念了. 题目如下: public class Suber exten ...
- Java 学习(2):java 基础概念
Java作为一种面向对象语言.支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 重载 基础语法: 一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.以 ...
- JAVA基础概念(三)
JAVA方法入参和返回类型 方法入参 基础数据类型 引用数据类型 修饰符 返回类型 方法名(参数类型 参数名,参数类型 参数名...){//方法体return} 方法返回类型 return xxx 具 ...
- JAVA基础概念(一)
一.JAVA标识符 标识符就是用于给 Java 程序中变量.类.方法等命名的符号.如图标黄部分: 使用标识符时,需要遵守几条规则: 1. 标识符可以由字母.数字.下划线(_).美元符($)组成,但不 ...
- java基础概念经典题目汇集
1.下面是People和Child类的定义和构造方法,每个构造方法都输出编号.在执行new Child("mike")的时候都有哪些构造方法被顺序调用?请选择输出结果 ( ) cl ...
- java基础概念
jre是java运行环境 jdk是java开发工具包 java源文件←编译class字节码文件←运行结构
随机推荐
- [Python] 文科生零基础学编程系列三——数据运算符的基本类别
上一篇:[Python] 文科生零基础学编程系列二--数据类型.变量.常量的基础概念 下一篇: ※ 程序的执行过程,就是对数据进行运算的过程. 不同的数据类型,可以进行不同的运算, 按照数据运算类型的 ...
- Java随机数和UUID
Java随机数和UUID Java随机数 在Java项目中通常是通过Math.random方法和Random类来获得随机数,前者通过生成一个Random类的实例来实现. 此类产生的是一组伪随机数流,通 ...
- 2_认识STM32库
2_认识STM32库 STM32库是由ST公司针对STM32提供的函数接口API,开发者可以调用这些函数接口来配置STM32的寄存器,使得开发人员得以脱离最底层的寄存器操作,开发快速. 库是架设在寄存 ...
- [Bayesian] “我是bayesian我怕谁”系列 - Variational Inference
涉及的领域可能有些生僻,骗不了大家点赞.但毕竟是人工智能的主流技术,在园子却成了非主流. 不可否认的是:乃值钱的技术,提高身价的技术,改变世界观的技术. 关于变分,通常的课本思路是: GMM --&g ...
- Element ui表格展示多张图片问题
显示一张图片的方法: <el-table-column label="头像" width="100"> <template scope=&qu ...
- Python Linear algebra
Linear algebra 1.模块文档 NAME numpy.linalg DESCRIPTION Core Linear Algebra Tools ---------------------- ...
- Sudoku Killer
Problem Description 自从2006年3月10日至11日的首届数独世界锦标赛以后,数独这项游戏越来越受到人们的喜爱和重视. 据说,在2008北京奥运会上,会将数独列为一个单独的项目进行 ...
- Basic Data Structure
Basic Data Structure Time Limit: 7000/3500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Oth ...
- 数据结构 单链表元素定位 PTA
由于这个很简单,他也貌似没要判断溢出,取巧突破 #include<stdio.h> #include<malloc.h> #include<stdlib.h> // ...
- Problem B: 农夫果园 简单点,出题的方式简单点
我走过最长的路,就是教主的套路#include <iostream> #include <string> using namespace std; class Fruit { ...