以此文来警示自己。

大三要结束了。

我从大一下学期开始接触java,两年半了,期间有很努力的自学,也参与了一下项目,满以为自己的java基础应该不错,但今天在网上看了一个视频才发现自己学的是多么的“浅”,知道了自己的java基础还很差。写程序不是可以实现功能就可以了,还要考虑效率。或许定义一个变量只会多占用几个比特位,一个for循环只会多消耗几毫秒,但当一段段代码组成一个个庞大的系统时,弊端就显露出来了,就像视频里说的,我们写出来的项目只会是一个个12306。

或许是科班出身的我们被教的东西不够吧,有些东西还是得自己努力去探索的,即使是基础知识,也不容小觑,因为基础也不是像你想的你们的简单。

下面奉上看视频做的笔记,经验丰富的高手们肯定都知道,望勿喷。

package test;

import java.math.BigDecimal;

public class TestData {

	/**
* 数据类型 :基本数据类型 引用数据类型(自定义)
* 基本数据类型:byte short int long float double char boolean
* 字节 1 2 4 8 4 8 2
*
* float :32位(1+8+23) 符号位+幂指位+数值位
* double:64位(1+11+52)
*/ public static void main(String[] args) {
//给char型赋值有四种方法
char c1 = 'a'; //直接赋值
char c2 = 97; //ASCII码赋值
char c3 = '\u4e2d'; //unicode编码赋值 后面是16进制
char c4 = '\t'; //转义字符
System.out.println(c1+"&"+c2+"&"+c3+"&"+c4+"&"); //a&a&中& & //int型赋值
int n1 = 30; //直接赋值
int n2 = 0b11110; //二进制赋值 0b+ ||30=16+8+4+2 ||除2取余 15_0 7_1 3_1 1_1 0_1 -> 11110
int n3 = 0x1e; //16进制赋值 0x+ ||转二进制 00011110 转16进制 1E
int n4 = 036; //8进制赋值 0+ ||除8取余 3_6 0_3 36
System.out.println(n1+"|"+n2+"|"+n3+"|"+n4+"|"); //30|30|30|30|
//char+int+String 先做加法 再拼接
System.out.println('1'+1+"1"); //501 char型的1表示ASCII码为49 49+1+"1" = 501
//String+int+char 拼接再拼接
System.out.println("1"+1+'1'); //111
//char+char 做加法
System.out.println('1'+'1'); //98 49+49=98
//2.0-1.1
System.out.println(2.0-1.1); //0.8999999999999999
System.out.println(2.0f-1.1f); //0.1
/**
* double: 2.0转为2进制 10.0000000000000000(16位处截断)
* 1.1转为2进制 01.0001100110011001 (1二进制为1, 小数:0.1*2=0.2_0 0.2*2=0.4_0 0.4*2=0.8_0 0.8*2=1.6_1 0.6*2=1.2_1 0.2*2=0.4_0)
* 相减得0.1110011001100111 转为10进制-0.8999999999999999
* float 先按double计算,然后四舍五入为0.9f
* 解决方法:使用BigDecimal
*/ BigDecimal b1=new BigDecimal("2.0");
BigDecimal b2 = b1.subtract(new BigDecimal("1.1"));
System.out.println(b2); //0.9 } }
package test;
//运算符
public class TestOperator { public static void main(String[] args) {
//取模运算符 符号位取决于第一个数
System.out.println(5%3); //2
System.out.println(-5%3); //-2
System.out.println(5%-3); //2
System.out.println(-5%-3); //-2
System.out.println(2%2); //0
System.out.println(-2%2); //0 //非短路运算符[& | ]和短路运算符[&& ||]
int num = 5;
if(++num < 4 && num++ > 1)
System.out.println("qwer");
System.out.println(num);
//结果是:6
//短路运算符前面判断为false 后面的就不再执行了(对与运算来说,对或运算相反)
num = 5;
if(++num < 4 & num++ > 1)
System.out.println("qwer");
System.out.println(num);
//结果是7
//非短路运算符全执行 //按位运算符
//当一个正数%2的n次方时,等价于&(该2的n次方-1)
System.out.println((100&1)==100%2); //true
System.out.println((100&3)==100%4); //true
System.out.println((100&7)==100%8); //true
System.out.println((100&15)==100%16); //true
System.out.println((100&31)==100%32); //true //权限的实现 1:权限1 2:权限2 4:权限3 8:权限4
//以他们的和表示权限 如3=1+2 7=1+2+4 9=1+8
//用自己的权限&某一权限的代表数字 可得知自己有无该权限
System.out.println((9&1)==1); //true 表示有权限1
System.out.println((9&2)==2); //false
System.out.println((9&4)==4); //false
System.out.println((9&8)==8); //true // 在不借助第三块空间的条件下 交换两个数
//使用按位异或运算符
int a = 1;
int b = 2;
a = a ^ b;
b = a ^ b;
a = a ^ b;
System.out.println(a+" "+b); //2 1
//加减法
a = 1;
b = 2;
a = a + b;
b = a - b;
a = a - b;
System.out.println(a+" "+b); //2 1 //不局限的利用for循环
//打印a-z
for(int i = 97;i<123;i++){
System.out.print((char)i);
}
//这样真的好吗? 看看下面的:
System.out.println();
for(char c='a';c<='z';c++){
System.out.print(c);
}
//第二种只利用char的16个位 第一种还需要利用int的32个位 } }

版权声明:本文为博主原创文章,未经博主允许不得转载。

我们的java基础到底有多差 一个视频引发的感想的更多相关文章

  1. 【Java基础】用LinkedList实现一个简单栈的功能

    栈的基本功能 栈的最基本功能是保障后进先出,然后在此基础上可以对在栈中的对象进行弹入弹出,此外,在弹出时,如果栈为空,则会报错,所以还需要提供获取当前栈大小的方法. 构造存储对象Student /** ...

  2. 【死磕 Java 基础】 — 自己动手实现一个 LRU

    大家好,我是大明哥,一个专注于[死磕 Java]系列创作的男人 个人网站:https://www.cmsblogs.com/.专注于 Java 优质系列文章分享,提供一站式 Java 学习资料 LRU ...

  3. java基础—继承题目:编写一个Animal类,具有属性:种类;具有功能:吃、睡。定义其子类Fish

    编写一个Animal类,具有属性:种类:具有功能:吃.睡.定义其子类Fish package zhongqiuzuoye; public class Animal { //属性 private Str ...

  4. 【java基础】随手写的一个日期计算,新手可以看看

    随手写的一个例子, 只是练习下自己的代码布局以及思路.. 1. 先写下简单的测试 2. 根据常用的不用修改的变量抽取出来, 作为常量(常量的命名可能有点不规范,谅解~) 3. 方法的作用不一样, 抽取 ...

  5. java基础常见面试题,这是一篇超长的随笔!!!

    1. Java基础部分....................................................... 4 1.一个".java"源文件中是否可以包括 ...

  6. Java基础部分 2

    一. Java基础部分 2 1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 2 2.Java有没有goto? 2 3.说说&和&&am ...

  7. 【Spring学习】【Java基础回顾-数据类型】

    Java基础回顾过程中,之前对于Java相关基础知识都是从这个人的博客看一些,那边的内容看一下,觉得不够系统化,决定用xmind脑图的形式,将Java基础知识回顾的作为一个系列,当前正在做的会包含: ...

  8. Java基础(一):简介

    一.java基础语法: 一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如 ...

  9. 01 Java基础

    Java基础 01 Hello 随便新建一个文件夹,存放代码 新建一个Java文件 文件后缀名为.java Hello.java [注意点]系统可能没有显示文件后缀名,我们需要手动打开 编写代码  p ...

随机推荐

  1. 【15】-java实现二分查找

    二分查找在面试中经常被遇到,这个方法十分优雅 介绍 二分查找可以解决(预排序数组的查找)问题:只要数组中包含T(即要查找的值),那么通过不断缩小包含T的范围,最终就可以找到它.一开始,范围覆盖整个数组 ...

  2. 面试之路(6)-BAT面试之操作系统内存详解

    本文主要参考两篇博客,读后整理出来,以供大家阅读,链接如下: http://blog.jobbole.com/95499/?hmsr=toutiao.io&utm_medium=toutiao ...

  3. rails自动生成大量记录的方法

    因为我们可能rails new了一个网站出来,但是里面没有测试数据,我们不能傻乎乎的在new.html.erb里面一个的手动输入吧?于是我们可以写一个小的脚本来帮助在数据库中插入大量数据:高版本的ra ...

  4. mybatis中#{}与${}的区别

    今天学习了下mybatis的查询,了解到了#{}与${}的区别, 配置文件如下: <?xml version="1.0" encoding="UTF-8" ...

  5. SAP BADI的“多次使用”(multiple use)

    SAP中的某些BADI是不允许多用(multiple use)的,即不能同时存在多个活动的增强实施类.如下图中的这种,无论为其创建多少个实施类,都只有活动的那一个会被触发: tips : 业务加载项定 ...

  6. Mysql精华版(命令大全)

    数据库的操作 a) 创建数据库:create database 库名[库选项]; b) 查看数据库:show databases;  show create database 库名; c) 删除数据库 ...

  7. ambari2.6.1汉化记录

    1.1测试机 Apache hadoop2.6Apache ambari 2.6.1集群规模:单节点操作系统 CentOS7以下所有操作均在root用户下执行 1.2安装环境 安装Maventar - ...

  8. 深入理解springMVC思想

     转载:http://elf8848.iteye.com/blog/875830 深入理解Spring MVC 思想   目录  一.前言二.spring mvc 核心类与接口三.spring mvc ...

  9. (原创)ubuntu 10.04+ruby1.9.2+rails3 安装记录

    第一步当然是现在ruby 1.9.2 的sourcecode了,因为现在的ubuntu 源中还没有1.9.2的版本 我下载的是ruby-1.9.2-p290.tar.gz 然后解压到/usr/loca ...

  10. PyQt5实现界面跳转

    网上关于PyQt5的教程很少,特别是界面跳转这一块儿,自己研究了半天,下来和大家分享一下 一.首先是主界面 1 # -*- coding: utf-8 -*- # Form implementatio ...